Chief's Installer Pro Help INDEX
Chief's Installer Pro for Win16 and Win32

 Chief's Installer Pro for Win16 and Win32

 © 1994-1997, Dr Abimbola A. Olowofoyeku (the African Chief)

 HomePage: http://ourworld.compuserve.com/homepages/African_Chief/

Chief's Installer Pro for Win16 and Win32 is an AWARD WINNING *** shareware INSTALLER and UNINSTALLER for Microsoft Windows 3.1x, Windows 95, and Windows NT. This is a hybrid 16/32-bit program in that while it runs as a 16-bit Windows program under Windows 3.1x, it also supports Win32 functions when running under Windows 95 and Windows NT. The Win32 support includes long file names, 32-bit registry functions, and Win95's "Automatic Uninstall" facilities. It is also fully compatible with OS/2 2.1x and OS/2 Warp. In short, this is an all-embracing installation solution for all current Windows platforms.

Registration is a mere £39.99 (U.K. Sterling) or $59.99 (US dollars). Please refer to the Registration and Registration Sites sections, for fuller information.

Please read this documentation and the Disclaimer section carefully before  using the program.

See also;

Introduction 	 . Features 	 . The Anatomy of Installations

The INF File 	 . Reserved Words 	 . The UNINSTALLER

Archives 	 . Batch Files 	 . Batch Commands

Existing Files 	 . Huge Files 	 . Formatting Codes

BDE Installation 	 . Parameters 	 . Foreign Language Support

Registration 	 . Registration Sites 	 . Registration Form

Feedback 	 . Updates 	 . Technical Support

Disclaimer 	 . Credits


INTRODUCTION

Chief's Installer Pro ("ChiefPro") is a suite of applications for the SETUP, INSTALLATION, and "unINSTALLATION" of Win16 and Win32 applications. It basically is an "off-the-shelf" installation suite. The program will install files from floppy disks (or a directory on a local/network drive, or a cd-rom drive) to any number of destination directories, and do everything else that a Windows Installer is supposed to do. If the files are compressed with Microsoft's COMPRESS.EXE they will be decompressed automatically. In this respect, Chief's Installer Pro uses the routines in LZEXPAND.DLL. If the files are not compressed, they will simply be copied to the destination directories. A Project Manager/IDE is included, for easy management of installation projects.

 SETUP.EXE

The main executable file for Chief's Installer Pro is INSTALL.EXE - and this is the only program that needs to be run. Also supplied is SETUP.EXE, an optional loader for INSTALL.EXE. SETUP.EXE performs the following functions;

[a] display a message (e.g., "Setup is copying the Chief's Installer Pro files ...") or any other message that you specify in SETUPINF.INF.

[b] copy the necessary ChiefPro support files, e.g., (INSTALL.EXE, WINSTALL.INF, WINSTALL.HLP) and WINSTALL.DLL, WINSTALP.MSG, WINSTALL.TXT, WINSTALL.WEL, WINSTALL.CPR, WINSTALL.BMP (if they exist) to the TEMP directory. CTL3DV2.DLL (if found) will be copied to the Windows SYSTEM directory - but only if a copy does not already exist there, and no copy is currently loaded in memory.

For these purposes, all these support files may be compressed on the installation disks - but in such cases, they must retain their real names (as above) - except INSTALL.EXE, which if compressed with the -r option, can be called INSTALL.EX_ (the original name will be restored by SETUP.EXE). I would however suggest that the .DLL files and the .BMP file should not be compressed.

SETUP will also optionally copy USER FILES to the TEMP directory in the same operation. If you want any user files to be copied (because you are going to do something with them) the file names should be specified in a $TEMPDIR line in SETUPINF.INF. You can have only one $TEMPDIR line in that file, and this can only contain a maximum of 10 file names (separated with semi-colons). You should remember to delete such files with the $CLEANUP command in WINSTALL.INF.

[c] load the copy of INSTALL.EXE from the TEMP directory, with the parameters necessary for it to work properly if run in this way

An INF file can optionally be passed as the FIRST parameter to SETUP.EXE, preceded by a front slash (i.e., "/"). The file will be passed on to INSTALL.EXE as the INF file to use (instead of WINSTALL.INF). SETUP.EXE will remove the slash and append the extension ".INF" to the parameter. The specified file MUST be on DISK #1 - it  will be copied to the TEMP directory, and then passed on to INSTALL.EXE.

For example, if you type SETUP /LAN -  SETUP.EXE will look for an INF file called "LAN" or "LAN.INF", (in that order), copy it to the TEMP directory, and then pass it to INSTALL.EXE as the INF file to use for the installation.

Is SETUP.EXE useful? "Very much so" is the answer. If there is more than one installation diskette, then you should use SETUP.EXE. It will save you the embarrassment of Windows trying to read from INSTALL.EXE after disk 2 (or whatever), and the disk in the floppy drive does not contain INSTALL.EXE. Even if there is only one installation diskette, it may still help keep the user occupied while INSTALL.EXE is loading.

I have tried to make this installer as flexible and easy to use as possible. To use it, you only need to take the following steps;

1. Create your installation disk set by placing your application's files on them (up to 64 installation disks are supported).

2.  You can compress the files with COMPRESS.EXE (it is immaterial whether you do so or not). If files are compressed and an underscore is used in the compressed file names, these names will only be converted to the original file names if they were compressed with the -r option.

3. Create an installation information file in ASCII format, using a text editor. The file should be called WINSTALL.INF, and should be in the prescribed format.

4. Run INSTALL.EXE or SETUP.EXE. It is recommended that you always tell your users to run SETUP.EXE, instead of INSTALL.EXE.

Steps 1 to 3 can either be done manually, or you can use the ChiefPro IDE and Project Manager to create and manage your installation projects.

See also;

RESERVED WORDS

WINSTALL.DIR


FEATURES

Below is a summary of the features and restrictions in Chief's Installer Pro.

1. You can only install into any combination of the following;

[a] a target directory, and any number of subdirectories under it's directory tree

[b] the Windows directory

[c] the Windows SYSTEM directory

[d] the TEMP directory

[e] any other specified directory

2. Only a maximum of 64 installation disks are supported. Chief's Installer Pro will prompt for the disks as they are required.

3. Chief's Installer Pro will optionally offer to put the destination directory into the "PATH" statement in AUTOEXEC.BAT

4. Chief's Installer Pro will optionally create Program Manager group files, and icons for any supplied file(s) - .EXEs, README files, etc.

5. Chief's Installer Pro will optionally run any supplied program(s) during the installation, as part of the installation process.

6. Chief's Installer Pro will optionally run any supplied program(s) immediately after the installation is complete

7. The stipulated format of the WINSTALL.INF file must be followed strictly.

8. Chief's Installer Pro allows you to supply on-line for the installation. You have to create a Windows help file called WINSTALL.HLP. This help file can be accessed by clicking on the "HELP" button. A simple one is supplied. You can either use that, or create your own. If no WINSTALL.HLP file is found in the path, then the "HELP" button is removed from the Install window.

9. Chief's Installer Pro will check whether there is sufficient space on the target drive - based on information which you supply as to how much disk space your application requires. If you need extra temporary disk space for the installation, Chief's Installer Pro can check for this also.

10. Chief's Installer Pro will make entries in any INI (or other) file(s) specified by you. Unlimited entries can be made. Do NOT use this feature to insert an entry which may already exist - the old entry will be deleted and replaced by the new one (e.g., do NOT use it for "DEVICE=" lines in SYSTEM.INI)

11. Chief's Installer Pro provides support for non-English languages.

12. Chief's Installer Pro provides support for PARTIAL INSTALLATIONS of programs. In this respect, you can have up to 10 installation options.

13. Chief's Installer Pro provides support for displaying a banner in the background, and for specifying the text of the banner, the font to use used for it, the font size, the color of the text, the color of the background, and a brush to paint the background.

14. Chief's Installer Pro provides support for displaying a bitmap file, stretched to fill the screen.

15. Chief's Installer Pro will optionally check the disks being inserted by the user to verify that they are the correct ones.

16. Chief's Installer Pro provides an UNINSTALLER, which can be used to uninstall any program that was installed with Chief's Installer Pro.

17. Chief's Installer Pro will check the target directory for the existence of any copy of each file being installed, and will optionally prompt the user for overwrite permission.

18. Chief's Installer Pro will check for version information in existing copies of shared binary files, and for date stamps in non-shared files.

19. Chief's Installer Pro will use the 3D dialog effects in CTL3DV2.DLL if a copy of that file is found. If CTL3DV2.DLL is not found, the program will try to use CTL3D.DLL. If that is also not found, then the program will use standard Windows dialogs (the absence of these files will NOT cause an error). This feature is disabled under Windows 95, because the 3D effect is built into Windows 95.

20. Chief's Installer Pro provides support for restarting Windows if any active shared file was overwritten. A dialog asking for confirmation appears automatically  if any active shared file was overwritten during the installation. The text on this dialog can be changed by the $RESTARTWIN-MESSAGE reserved word.

21. Chief's Installer Pro provides support for displaying a README file to the user when the installer is executed. The README file should be a plain ASCII file not bigger than 16kb. The file should be called WINSTALL.TXT. You can cause the contents of the file to be displayed automatically by setting $AUTO-CLICK-BUTTON to 4 (otherwise the user will have to click on the "readme" button to display the text. If the file WINSTALL.TXT is not found, then the "readme" button will be removed at run time.

22. Chief's Installer Pro provides support for making entries into the the Registration Database, by the reserved word $REG-DATA.

23. Chief's Installer Pro provides limited support for installing TRUETYPE fonts.

24. Chief's Installer Pro provides a batch language and support for running Chief's Installer Pro batch files.

25. Chief's Installer Pro provides support for UNZIP - the UNZIP command is compatible with PKZIP(tm) 2.x ZIP archives.

26. Chief's Installer Pro provides an Integrated Development Environment (IDE) and a Project Manager for developing and managing installation projects.

27. Chief's Installer Pro's IDE provides an option to convert Visual BASIC 3.0 Setup Wizard (.VBZ) files to a Chief's Installer Pro project.

28. Chief's Installer Pro provides a compiler for compiling your WINSTALL.INF file and Chief's Installer Pro batch files.

29. Chief's Installer Pro is fully compatible with 32-bit versions of Windows, such as Windows 95 and Windows NT, and with Windows emulators such as OS/2's Win-OS/2.

30. Chief's Installer Pro provides support for displaying messages (up to 10) during the course of the installation. All the messages must be in an ascii file called WINSTALL.MSG. Each message section must begin with a [#<number>] (e.g., [#1]), and cannot be more than 8 lines long (max: 45 characters per line). The messages are displayed in turn, automatically (at the rate of 100 divided by the number of messages - as per the percent meter).

31. Chief's Installer Pro provides (limited) support for installing files from certain subdirectories of the source directory (e.g., on a cd-rom or a network drive). The scheme is to use each such subdirectory as a pseudo floppy disk - i.e., the files in the subdirectory will be specified on a $DISK# line, and then the subdirectory itself will be called $DISK# (e.g., $DISK2 = for the files which will be on the $DISK2 lines). Thus the installer will automatically look for directories names $DISK# under the source directory, to install $DISK# files from. This includes $DISK1 as well.

32. Chief's Installer Pro supports 32-bit functions under Windows 95 and Windows NT, while still being fully compatible with Windows 3.1x. 32-bit support includes long filenames and registry functions.

33. Chief's Installer Pro supports Win95's "automatic uninstall" feature.

34. Chief's Installer Pro supports the splitting of huge files into smaller chunks which can fit onto a floppy disk, and for rebuilding the files again.

35. Chief's Installer Pro supports a built-in compression engine, which uses LZSS (i.e., LZ77) compression.


FOREIGN LANGUAGE SUPPORT

All the string messages presented to the user by the install erare in string tables. There are internal ENGLISH string tables in INSTALL.EXE, UNINSTAL.EXE, and SETUP.EXE. These will normally be used to display all the messages and information. However, Chief's Installer Pro provides 2 methods of changing/translating the string tables for use by the various .EXEs. One method is by compiling the string tables into language DLLs (for INSTALL.EXE and UNINSTAL.EXE) and the other is by putting the string tables in ASCII files (for SETUP.EXE, INSTALL.EXE and UNINSTAL.EXE).

INSTALL.EXE will always look for a dynamic link library file called WINSTALL.DLL, or an INF file called WINSTALL.LNG from which to load the string tables. If any of these files is found, the string tables are read from it by ChiefPro at startup time. If both files are found, then the strings in WINSTALL.LNG will be used.

If you are going to use any of these files, it MUST be in the same directory as INSTALL.EXE. If neither of them is found, ChiefPro will use the default (English) string tables inside INSTALL.EXE itself.

By the same token, UNINSTAL.EXE will also look for a DLL called UNINST.DLL, or an INF file called UNINST.LNG, in order to load the string tables from it. If you use any of these files, it must be in the same directory as UNINSTAL.EXE. If neither of them is found, then the UnInstaller will use the default (English) string tables inside UNINSTAL.EXE itself. If both of them are found, the strings in UNINST.LNG will be used.

If you are going to create a language INF file (i.e., WINSTALL.LNG or UNINST.LNG), then it needs to be in the same format as the sample  WINSTALL.LNS or UNINST.LNS files. You may simply edit or translate the text in the .LNS files, and then change the extension to .LNG. Also, a language INF file can be compiled as an INF file (not as a batch file), with COMPILE.EXE, or from the ChiefPro IDE. Note that this will slow down the loading of the installer.

Finally, SETUP.EXE will also always look for an ASCII file called SETUPINF.INF in order to load the string tables from it. Each of the strings must be numbered (by a dollar sign, then a hash, followed immediately by its numeric ID), and they must all be together in a section called [SETUP]. This is because SETUP.EXE will use the GetPrivateProfileString API to retrieve them. A sample of this file is provided - it mirrors the English string tables inside SETUP.EXE.

If you create your own SETUPINF.INF, it must be in the same directory as SETUP.EXE, it must be uncompressed, and it must be exactly in the same format as the sample that I have provided. If SETUPINF.INF is not found, then Setup will use the default (English) string tables inside SETUP.EXE itself.

What all this means is that you can change the language used by the installer by simply producing your own translations of the English string tables, and compiling them into the relevant DLLs or INF files. For these purposes, I have provided copies of my resource scripts, and a sample SETUPINF.INF file. These serve as a guide to the string tables and the numeric IDs of the strings. Please do NOT change the numeric ID of any string.

If anybody produces a non-English translation of the script files, please send me a copy, so that I can package non-English versions of with subsequent releases of the installer. If I package your translation, you name will make it into the "Credits" section for each version that contains your translation.

 Please note this;

[a] NO checking is carried out to verify the contents of translated string tables, or even that the string tables actually exist. Thus, if you edit the string tables and/or produce your own DLLs or INF file, you are on your own.

[b] I can only vouch for the accuracy of the English version of any string table - and even then, only the version which was produced by me. If I package any non-English version of any file, please do not stone me if the translation is incorrect - but if you do find errors, please DO send me what you think is a correct translation of the string table.


THE INF FILE

The configuration file for each installation is called WINSTALL.INF. This is an ASCII file that has to be created with a text editor (e.g., the Windows NOTEPAD applet). Every line in the file should end with a carriage return plus a line feed - so please avoid using UNIX editors to create your INF files).

It is essential that the instructions on the format of WINSTALL.INF be followed carefully, otherwise, the installer will not work correctly. The best approach is to edit the sample files which I have provided. They contain sufficient comments for them to be understood. WINSTALL.INF is a standard ASCII file, in the following format;

1. Any line beginning with a ";", or "[" or "REM" is ignored

2. Empty lines are ignored

e.g., these lines will be ignored

[This line will be ignored]

; So will this line

REM  so will the one just above me, and me as well!

3. Each line must not contain more than 220 characters

4. There are RESERVED WORDS for every valid entry, and these must be followed strictly.

 The Chief's Installer Pro IDE (AUTOCALC.EXE)

Considerable assistance can be derived by using the Project Manager in the Chief's Installer Pro development environment (you need to run AUTOCALC.EXE for this) in creating INF files. See the help file AUTOCALC.HLP for full documentation on the Project Manager.

The IDE is an attempt to provide a facility for managing your installation projects. It does a good job of producing template INF files for each project, but like most other features of Chief's Installer Pro, it is entirely optional. If you do not like it, simply delete it - I will not take it personally!

See also;

RESERVED WORDS

WINSTALL.DIR


RESERVED WORDS

Everything is done in Chief's Installer Pro through the use of RESERVED WORDS. Each reserved word begins with a dollar sign ($) and determines a certain aspect of Chief's Installer 's behaviour. Below is a list of the reserved words and the methods of using them.

Below is an alphabetical list of RESERVED WORDS;

$ABORT-MESSAGE

$ABORT-UNINSTAL-QUESTION

$AUTOEXEC.BAT

$AUTO-CLICK-BUTTON

$AUTO-REPLACE

$BANNER-FONT

$BANNER-FONT-SIZE

$BANNER-MESSAGE

$BANNER-SHADOW-COLOR

$BANNER-TEXT-BACKGROUND

$BANNER-TEXT-COLOR

$BANNER-WINDOW-BRUSH

$BATCH-FILE

$BIG-METER-COLOR

$BITMAP

$BUILD-FILE

$BUILD-FILE-EX

$CANCEL-BUTTON-TITLE

$CHECK-MY-DLL-VERSIONS

$CLEANUP

$CLOSE-GROUP-BOX

$COPYBUFFER

$COPYRIGHT-MESSAGE

$CREATE-FILE

$DATA-SPACE

$DEBUG-LOG

$DELETE-ICON

$DEST

$DIALOG-ICON

$DISK

$DISKDIR

$EXEC

$EXEC-UNINSTALL

$FINAL-MESSAGE

$FONT

$FORCE-EXIT-WINDOWS

$FORCE-OVERWRITE-ALL-EXISTING-FILES

$FORCE-OVERWRITE-OLDER-FILES

$FORCE-RESTART-WINDOWS

$GROUP

$HIDE-OTHERS-PROGRESS

$ICO

$ICON

$INI

$LAN-SYSDIR

$LONG-FILENAMES

$MAKE-UNINSTALL-LOG

$MAX-DUPLICATES

$MID-BATCH-FILE

$NO-ABORT-BUTTON

$NO-CTL3D.DLL

$NO-END-DIALOG

$NO-HELP-BUTTON

$NO-PATH-DIALOG

$OK-BUTTON-TITLE

$OPTIONAL

$OPTIONHELP

$PAINTDIALOGS

$PRE-EXEC

$README-BUTTON-TEXT

$README-FONT

$REG-DATA

$REGISTER-UNINSTALL

$RESTARTWIN-MESSAGE

$SETCHECKBOX

$SHOW-FILE-PERCENT

$SKIP-IDENTICAL-FILES

$SKIP-NEWER-FILES

$SKIP-OLDER-FILE

$SMALL-METER-COLOR

$SOURCEDIR

$SOURCE-DRIVE

$SPACE

$SPLASH-MESSAGE

$SWAP-SPACE

$SYSDIR

$SYSDIR-SPACE

$TARGET

$TEMPDIR

$TEST-RUN

$TEXT-BACKGROUND

$TITLE

$UNPAK

$UNZIP

$UPGRADE-VERSION

$USE-WIZARDS

$USER-DLL

$USER-OPTION

$VERIFY-INSTALL-DISKS

$VERSION-COPY-ERROR-MESSAGE

$VERSION-INFO-TITLE

$VERSION-INFO-MESSAGE

$WELCOME-MESSAGE

$WIN32-FAIL-MESSAGE

$WIN32-ONLY

$WINDIR

$WINDIR-SPACE

$WINDOW

$WINDOW-BACKGROUND

$WRITE-TEXT


$TITLE

This is used to specify the name or title of your application. This is what will appear in the title of the installation program's window - You can have only ONE such line. If you don't supply any text for the $BANNER-MESSAGE reserved word, this title will be used for the banner, with the words "Welcome to" prepended to it.

The Syntax is;

 $TITLE=<program title>

EXAMPLE:

 $TITLE=Great Program v1.20

 See also;

$BANNER-MESSAGE


$TARGET

This is used to specify the name of the DEFAULT target directory for the installation. The user will be able to change this at run time. If the target directory does not exist, Chief's Installer Pro will create it - and, if necessary, will create directories recursively. You can have only ONE such line.

By default, ALL the files will be installed into whatever is the target directory chosen by the user. You can however specify that certain files should be installed into subdirectories UNDER THE TARGET DIRECTORY TREE, or into the WINDOWS DIRECTORY, or into the WINDOWS SYSTEM DIRETORY, or into the TEMP DIRECTORY.

To use this, you use the $DEST, $WINDIR, $SYSDIR, $TEMPDIR reserved words.

This reserved word can take optional extra parameters - first, details of an INI file in the Windows directory from which entries from a previous installation of your program can be obtained, or, secondly, a value in the registration database (using the $REG-DATA command) which contains the same information. The entry in either case should point to the directory into which the user installed any previous version. If such an entry is found, it will be used to replace the default one in your $TARGET line. If no entry is found, the default will be used.

If the extra parameters are used to point to an INI file, then the $TARGET line MUST contain 4 entries, in the following format;

$TARGET=Default;INI file name;Section;KeyName

"Section" corresponds to "ApplicationName" in the Windows API speak (i.e., the title of the relevant section in the INI file) and "KeyName" corresponds to it's ordinary meaning with regard to the GetPrivateProfileString API call, which is what is used to retrieve the entries from the INI file (see also the $INI reserved word). The INI file name should not contain any path (just the filename only) - the program will only look for the file in the Windows directory.

e.g.,

$TARGET=C:\CHIEPRO;CHIEFPRO.INI;ChiefPro;ChiefDir

Note that you will need to create the requisite entry with the $INI reserved word.

e.g.,

$INI=$WINDIR\CHIEFPRO.INI;ChiefPro;ChiefDir;$DEST

If the extra parameters are used to point to a value in the registration database, then the $TARGET line MUST contain 3 entries, in the following format;

$TARGET=Default;<$REG-DATA>;<registry entry>

e.g.,

$TARGET=C:\CHIEFPRO;$REG-DATA;HKEY_LOCAL_MACHINE\SOFTWARE\CHIEF\INSTALL_PATH

Note that you will need to create the requisite entry with the $REG-DATA reserved word.

The Syntax is;

 $TARGET=<default directory>[;INI filename;Section;KeyName][$REG-DATA;<entry>]

EXAMPLES:

 $TARGET=C:\MYPROG

 $TARGET=C:\MYPROG;PROG.INI;ProgPriv;ProgDir

 $TARGET=C:\CHIEFPRO;$REG-DATA;HKEY_LOCAL_MACHINE\SOFTWARE\CHIEF\WCL_PATH

See also;

$DEST

$INI

$REG-DATA

$SYSDIR

$TEMPDIR

$WINDIR


$SPACE

Use this to specify the amount of disk space needed for the installation. The amount should be in BYTES and should only contain whole numbers (no spaces, no letters, and no decimals).

This information is used by Install to warn the users of the amount of space that they need to have free on their disks, and to show the progress of the installation in the "percentage meter". Install will check to see that the specified amount of space exists on the target drive before installation begins. If there is insufficient space, Install will abort with an error message.

There is no need for the number to correspond exactly with the actual required number of bytes - a difference of up to 2% of the size of your application (plus or minus) is allowed, and such differences will be catered for automatically. In fact, it is always good to add about 1% to the actual disk space needed - because of the vagaries of disk cluster sizes, it may be wise to over-estimate the disk space needed (a little bit of trial and error is in order here). You can have only ONE such line.

The amount specified here should also take into account any disk space requirements specified in any $OPTION lines.

NOTE: The Chief Pro IDE (AUTOCALC.EXE) can be used to calculate the required space automatically. Please read AUTOCALC.HLP for fuller details.

The Syntax is;

 $SPACE=<required disk space>

EXAMPLE:

 $SPACE=2002003

See also;

$USER-OPTION

$OPTIONAL

$SWAP-SPACE

$SYSDIR-SPACE

$WINDIR-SPACE


$SYSDIR-SPACE

This reserved word is optional. It is only useful if you are using the $SYSDIR command to install shared files into the Windows SYSTEM directory. Its purpose is to enable the installer to ascertain that there is sufficient space on the drive which holds the Windows SYSTEM directory (in cases where the user is installing the program onto another drive). The line should only contain the total size of the files that will be installed to the Windows SYSTEM directory.

This line does not in any way affect the entry that should be on the $SPACE line, because they serve different (but sometimes overlapping) purposes. If the user is installing the program onto the same drive as that on which Windows is installed, this line is ignored at run time.

NOTE: The bonus program AUTOCALC.EXE can be used to calculate the required space automatically. Please read AUTOCALC.TXT for fuller details.

The Syntax is;

 $SYSDIR-SPACE=<space>

See also;

$SPACE

$SYSDIR

$WINDIR-SPACE


$WINDIR-SPACE

This reserved word is optional. It is only useful if you are using the $WINDIR command to install shared files into the Windows directory. Its purpose is to enable the installer to ascertain that there is sufficient space on the drive which holds the Windows directory (in cases where the user is installing the program onto another drive). The line should only contain the total size of the files that will be installed to the Windows directory.

This line does not in any way affect the entry that should be on the $SPACE line, because they serve different (but sometimes overlapping) purposes. If the user is installing the program onto the same drive as that on which Windows is installed, this line is ignored at run time.

NOTE: The bonus program AUTOCALC.EXE can be used to calculate the required space automatically. Please read AUTOCALC.TXT for fuller details.

The Syntax is;

 $WINDIR-SPACE=<space>

See also;

$SPACE

$SYSDIR-SPACE

$WINDIR


$SWAP-SPACE

Use this to specify the amount of any temporary swap disk space needed for the installation. The amount should be in BYTES and should only contain whole numbers (no spaces, no letters, and no decimals).

This information is used by Install to warn the users of the amount of space that they need to have free on their disks - bit it does not show in the "percentage meter". The installer will check on the drive which  contains the TEMP directory to ensure that there is sufficient swap space. This obviously presumes that all your scratch and temporary files will be created in the TEMP directory. You can have only ONE such line.

EXAMPLE:

 $SWAP-SPACE=0

See also;

$SPACE

$SYSDIR-SPACE

$WINDIR-SPACE


$DISK

You use this reserved word to specify the disk(s) in the installation set, and the file(s) which should be copied from them. Each file name or file specification should be separated from the next one by a semi-colon.

You can use the wildcard character "*" in this respect.

The Syntax is;

 $DISK n = <filenames(s)>

where:

n = numbers from 1 to 64

<filename(s)> = the file specifications

the easiest thing to do would be to just specify "*.*" - to copy all the files - but you can be more specific.

NOTES:

If you specify a file that does not exist on the disk, it will just be ignored.

Note that each line cannot be longer than 220 characters in total. Since this might mean that all the files you want to specify for a disk might not fit on one line, you can either put all the file specifications for each disk on a single $DISK line, or you can split them up into several $DISK lines for better readability. For example, for DISK 1 of the installation set, you can either put all the files on one "$DISK1=" line (if they will fit on one line) or you can have several "$DISK1=" lines, each line listing different file specifications to make up your DISK 1).

In most cases, judicious use of wildcard characters should mean that you only need one line for each disk in your installation set (e.g., if you use something like: $DISK1=*.EX_;*.HL_;*.TXT). However, of you wish to be more specific about the files on each disk, the flexibility is available to spread each "$DISK" across many lines.

Chief's Installer Pro will prompt the user for each disk in the installation set. However, unless you turn on disk verification with the $VERIFY-INSTALL-DISKS reserved word, no attempt will be made to check that the disk being inserted is the correct one. Please note this point.

Please ensure that the $DISK lines are numbered consecutively, otherwise there may be problems - for example, don't jump from "$DISK1=" to "$DISK3=" (the problem here is - where is $DISK 2? - if you put "$DISK2=" after "$DISK3=", then there may be problems numbering the disks.)

Compressed files with underscores in the filename will have the filenames expanded into the name of the original files ONLY if the original files were compressed with the -r option

VERY IMPORTANT NOTE:  Please be very careful with the way wildcard characters are used, especially if your program spans more than one disk. For example, it is very convenient to use *.* for all the disks in your installation set, and while this will be okay if your program is only going to be installed from floppy disks, imagine the chaos, if somebody copies all the files to a directory on the hard disk before installing, or if a CD-ROM distributor puts your program in a directory on a CD-ROM. You will have the same files ("*.*") being installed over and over again, for each disk on the installation set, and your users will not be impressed.

Thus, unless you are absolutely certain that your program will only ever be installed from floppy disks, you need to be selective in your use of wildcard characters - at the least, to make sure that if all your program's files are installed from a single source directory, none of the files which belong to one disk can be confused with files belonging to another disk. In this wise, it may be advisable to place files on each disk according to type and/or extension (e.g., $DISK1=*.EX_;*.HL_ : $DISK2=*.DL_;*.VB_ - etc., etc).

You can also use the $UNZIP command on a $DISK line, to specify that a file on that disk should be UNZIPPED instead of just copied or expanded. In this case, the files will only go to the destination provided in the $UNZIP command.

EXAMPLES:

 $DISK 1 = *.*

 $DISK 2 = *.DLL;*.HLP;*.DRV;WS*.*;*.EX_

 $DISK 2 = EXPAND.*;COMPRESS.EXE;FRED.EXE;CHIEF.EXE

 $DISK 3 = HELP.DOC;*.FFF

 $DISK4=$UNZIP;$SOURCEDIR\BIN.ZIP;$DEST\BIN

See also;

$VERIFY-INSTALL-DISKS

$UNZIP


$DEST

[i] Where ever this appears at the beginning of a line, the following take place;

(a) "$DEST" is replaced with the target directory selected by the user. For example, entry of "$DEST\BIN=PROG.EXE", if the user installed to "C:\NEWPROG", becomes "C:\NEWPROG\BIN=PROG.EXE".

In this respect, you can also use $DEST to provide for installing files to other drives and directories (i.e., not under the directory tree of the target directory, by putting two exclamation marks (!!) after the $DEST, and then adding the "=" sign, and the relevant directory, followed be another "=" sign, and then the file(s) which are to go there. You can use other reserved words (e.g., $WINDIR) here.

(b) anything after the "=" sign is taken as the file(s) to be installed into that directory (instead of into the target directory). There can be up to 30 file names, each separated by a semi-colon. Some limited use of wildcards is allowed here - if you want to use wildcards, then it must be an asterix, followed by a dot, and then the full extension of the files - e.g., *.TXT;*.INI;*.DLL;*.EXE. Great care must be taken not to confuse the program when using wildcards in this way. Careless use of wildcards might lead to files going where they were not meant to go. It is better to name individual files whenever possible.

The sub directories will be created when necessary - but note that the order in which they are specified may be important - if there are deep levels of nesting, the ones higher up the tree must be specified first.

Please NOTE that in the case of files compressed with the -r switch, you should use the real (original) names of the uncompressed files, and NOT the names of the compressed files. For example, if the file MYPROG.DLL was compressed to MYPROG.DL_, you should put MYPROG.DLL on this line. The compressed filenames are only allowed on $DISK lines.

You can have up to any number of $DEST lines (i.e., no limit).

[ii]  Where ever this appears elsewhere in a line, the "$DEST" is replaced with the target directory selected by the user. This use of the $DEST reserved word is only useful in the "$ICON", "$INI", and "$EXEC" lines.

The Syntax is;

 $DEST=<filename(s)>

EXAMPLES:

 $DEST\BIN=*.EXE;*.DLL;WINSTALL.INF

 $DEST\HELP=*.HLP;*.TXT;*.WRI

 $DEST\SAMPLES=SAMPLE1.INF;SAMPLE2.INF;SAMPLE3.INF

 $DEST!!=D:\TEMP=*.INI;*.TXT;*.TKT

 $DEST!!=$WINDIR\BAK=*.INI;*.TXT;

See also;

$EXEC

$ICON

$INI

$TARGET

$SYSDIR

$TEMPDIR

$WINDIR


$WINDIR

[i] Whenever this appears at the beginning of a line, the files on that line are installed to the Windows directory (instead of the target directory). You can have an unlimited number of $WINDIR lines. Each line can contain a maximum of 30 file names, each separated by a semi-colon. Some limited use of wildcards is allowed here - if you want to use wildcards, then it must be an asterix, followed by a dot, and then the full extension of the files - e.g., *.INI;*.EXE. Great care must be taken not to confuse the program when using wildcards in this way. Careless use of wildcards might lead to files going where they were not meant to go. It is better to name individual files whenever possible. Note that each line cannot be longer than 220 characters.

Please NOTE that in the case of files compressed with the -r switch, you should use the real (original) names of the uncompressed files, and NOT the names of the compressed files. For example, if the file MYPROG.DLL was compressed to MYPROG.DL_, you should put MYPROG.DLL on this line. The compressed filenames are only allowed on $DISK lines.

[ii] Where ever this appears elsewhere in a line, the "$WINDIR" is replaced with the Windows directory. This use of the $WINDIR reserved word is only useful in the "$ICON", "$INI", and "$EXEC" lines.

EXAMPLES:

 $WINDIR=PROG1.EXE;PROG2.EXE;PROG2.EXE;*.INI

 $WINDIR=RATTER.EXE;RETTO.EXE;DRAT.EXE

 $WINDIR=ROTTO.INI;ROUTER.INI;TROUBLE.INI

See also;

$DEST

$SYSDIR

$TARGET

$TEMPDIR


$SYSDIR

[i] Whenever this appears at the beginning of a line, the files on that line are installed to the Windows SYSTEM directory (instead of the target directory). You can have an unlimited number of $SYSDIR lines. Each line can contain a maximum of 30 file names, each separated by a semi-colon.

Some limited use of wildcards is allowed here - if you want to use wildcards, then it must be an asterix, followed by a dot, and then the full extension of the files - e.g., *.VBX;*.DRV;*.DLL;*.TTF. Great care must be taken not to confuse the program when using wildcards in this way. Careless use of wildcards might lead to files going where they were not meant to go. It is better to name individual files whenever possible.

When wildcards are used in this way, any conflict is resolved in the following order: [1] $SYSDIR, [2] $WINDIR, [3] $TEMPDIR, [4] $DEST. This means for example that, if you use "*.DLL" in a $SYSDIR line, and then you put something like PROG.DLL in a $DEST line, the file PROG.DLL will still be installed into the Windows SYSTEM directory, because the $DEST entry is resolved last. Please note this point.

Note also that each line cannot be longer than 220 characters.

Please NOTE that in the case of files compressed with the -r switch, you should use the real (original) names of the uncompressed files, and NOT the names of the compressed files. For example, if the file MYPROG.DLL was compressed to MYPROG.DL_, you should put MYPROG.DLL on this line. The compressed filenames are only allowed on $DISK lines.

[ii] Where ever this appears elsewhere in a line, the "$SYSDIR" is replaced with the Windows SYSTEM directory. This use of the $SYSDIR reserved word is only useful in the "$ICON", and "$EXEC" lines.

EXAMPLES:

 $SYSDIR=PROG1.DLL;PROG2.DLL;PROG2.DLL;MYDRV.DRV

 $SYSDIR=RATTER.DLL;RETTO.DLL;DRAT.DRV;*.VBX;*.TTF

 $SYSDIR=ROTTO.DRV;ROUTER.DRV;TROUBLE.DRV

See also;

$DEST

$TARGET

$TEMPDIR

$WINDIR


$TEMPDIR

[i] Whenever this appears at the beginning of a line, the files on that line are installed to the TEMP directory (instead of the target directory). There can be up to 30 file names, each separated by a semi-colon. Some limited use of wildcards is allowed here - if you want to use wildcards, then it must be an asterix, followed by a dot, and then the full extension of the files - e.g., *.TMP;*.$$$. Great care must be taken not to confuse the program when using wildcards in this way. Careless use of wildcards might lead to files going where they were not meant to go. It is better to name individual files whenever possible. You can have only ONE such line.

[ii] Where ever this appears elsewhere in a line, the "$TEMPDIR" is replaced with the TEMP directory. This use of the $TEMPDIR reserved word is only useful in the "$INI", and "$EXEC" lines.

See also;

$DEST

$TARGET

$SYSDIR

$WINDIR


$AUTO-REPLACE

Use this to specify any files that should be replace automatically if they already exist (i.e., without first prompting the user for confirmation).

This reserved word if effective for matching files which exist in the target directory, and which are NOT newer (by their date stamp) than the files being installed. If the existing file has got a more recent date stamp than the one being installed, then the user WILL be prompted before it is overwritten.

You can have an unlimited number of $AUTO-REPLACE lines, and up to 30 file names on each line (separated by semi-colons). Some limited use of wildcards is allowed here - if you want to use wildcards, then it must be an asterix, followed by a dot, and then the full extension of the files - e.g., *.TXT;*.INI;*.DLL;*.EXE. Great care must be taken not to confuse the program when using wildcards in this way. Careless use of wildcards might lead to files going where they were not meant to go. It is better to name individual files whenever possible.

Please NOTE that in the case of files compressed with the -r switch, you should use the real (original) names of the uncompressed files, and NOT the names of the compressed files. For example, if the file MYPROG.DLL was compressed to MYPROG.DL_, you should put MYPROG.DLL on this line. The compressed filenames are only allowed on $DISK lines.

The Syntax is;

 $AUTO-REPLACE=<filename(s)>

EXAMPLES:

 $AUTO-REPLACE=PROG1.EXE;PROG1.DLL;PROG4.DLL;MYPROG.INI

 $AUTO-REPLACE=RATTER.RAT;RETTO.RET;DRAT.DRA

 $AUTO-REPLACE=ROTTO.ROT;ROUTER.RUT;TROUBLE.HUT

See also;

EXISTING FILES

$FORCE-OVERWRITE-ALL-EXISTING-FILES

$FORCE-OVERWRITE-OLDER-FILES

$SKIP-IDENTICAL-FILES

$SKIP-OLDER-FILE


$INI

This is used to specify any ASCII files that configuration information should be written into. Normally, these will be INI files of some sort, but they can be any file, as long as any such file is in ASCII format.

You have have up to any number of $INI lines (i.e., no limit) - and each line MUST be in the format prescribed below;

 Each line must contain at least 4 entries - each separated with a semi-colon

[a] the first entry is the NAME of the file to be written to - a full path must be supplied - otherwise, the file is presumed to be in the WINDOWS directory. You can use "$DEST" here, to specify files in the directory tree of the target directory. If the file does not exist, it is created.

[b] the second entry is the title of the section ("Application name" in Windows API speak) that should contain the entry.

[c] the third entry is the name of the entry you wish to make ("Keyname" in Windows API speak)

[d] the fourth entry is the string that you wish to associate with the entry. If you wish to specify an empty string as the value for the entry, just supply " " as the 4th entry.

[e] you can have an optional fifth entry NO-REPLACE. Use this to signify that an existing entry should not be replace. By default, an existing entry in an INI file will be replaced by the ones specified in the $INI lines. Using NO-REPLACE as the fifth entry in a $INI line will ensure that while an entry will be made if none already exists, old entries will be left intact.

[f] you can have an optional sixth entry - a user option number. Use this to assign the INI entry to a user option. This is done by specifying the relevant user option (e.g., $USER-OPTION3) as the 6th entry on the $INI line (or as the 5th entry, if NO-REPLACE is not used for the 5th entry). If the specified user option is de-selected by the user at runtime, then the INI entry will not be made.

The Syntax is;

 $INI=<Filename>;<Section>;<KeyName>;<String>[;NO-REPLACE][;$USER-OPTION#]

EXAMPLES:

 $INI=$DEST\MYPROG.INI;CONFIG;STARTUP;PROG.EXE -FE=XDS.XCL

 $INI=WIN.INI;EXTENSIONS;GFD;$DEST\BIN\GFD2.EXE ^.GFD

 $INI=C:\AUTOEXEC.BAT;MYPROG;SET PROGDIR;$DEST;$USER-OPTION1

NOTES:

a. Quotation marks in the entry string will now be treated as literal characters.

b. if a literal semi-colon is desired, then use 2 hashes (i.e., ##) to depict this - this will be converted automatically to a semi-colon.

e.g., $INI=C:\AUTOEXEC.BAT;user;SET PATH;%path%##$windir##$sysdir##$dest

may translate to:

SET PATH=%path%;c:\windows;c:\windows\system;c:\chiefpro

See also;

$DEST

$SYSDIR

$WINDIR


$GROUP

This is used to specify the DEFAULT name of the Program Manager Group in which the icons will be created. This can be the name of an existing group (e.g., "Accessories", "Main", etc.) in which case, the items will just be added to the ones already in that group. However, you may specify a completely new group. If this does not exist, it will be created.

You can have only ONE such line - but you can specify other group names for different icons in the $ICON reserved word.

$GROUP can also take an extra (and optional) parameter - the word AUTO, the word DISABLE, or the word SHOW-COMBO. If used, this parameter should appear after the group name and should be separated from the group's name by a semi-colon.

1. AUTO - means create a group automatically - do not allow the user to uncheck the "Create Program Manager Group" checkbox.

2. DISABLE - means do NOT create any group at all - and do not allow the user to specify that a group should be created.

If either of these parameters is used, then the checkbox will not be presented. In none of them is used, then the checkbox will be presented and the user will have a choice. Both of these options deny the user a choice in the matter (i.e., either the group will be created automatically or it will not be created at all, regardless of what the user may want).

3. SHOW-COMBO - means show a combo box displaying the names of the available Program Manager groups. The user can then choose any of the listed groups to use as the main group.

The Syntax is;

 $GROUP=<groupname>[;parameter]

EXAMPLES:

 $GROUP=My Program

 $GROUP=My Program;AUTO

 $GROUP=My Program;DISABLE

 $GROUP=My Program;SHOW-COMBO

See also;

$ICO

$ICON


$ICON

This is used to specify the names of the files for which you want Program Manager icons to be created. There can be a maximum of 128 icons.

Each $ICON line should contain only ONE entry. This is the name of the file to create an icon for (this could be a program file plus a parameter or any other file). This should be followed by a semi-colon, and after the semi-colon, the title that Program Manager should give to the icon; and (optionally), preceded by a semi-colon, the name of any other group (i.e., if different from the one in the $GROUP reserved word) that the icon should be created in; and (optionally), the name of the .ICO file to use for the file.

If no group is specified on this line, then the one pointed to by the $GROUP reserved word will be used.

If no external .ICO file is specified, then Program Manager will use the first icon it finds in the specified file, or if the file has no icon, then a default icon will be used.

If you specify the name of an external .ICO file, then the full path name of the icon file must be provided, AND, that path MUST be the same as the path of the file that a Program Manager icon is being created for. What this means is that the full path of that file must be the first thing on the $ICON line (i.e., you cannot specify an executable, and then the file as an argument to that executable).

Secondly, if you specify an external .ICO file, then you MUST also specify the group in which the icon will be created (i.e., there must be at least 4 entries on the $ICON line in such cases). In this case, you can simply put $GROUP as the group name.

Normally, existing icons will not be duplicated if the installation is run again. To change this behaviour, you can specify ALLOW-DUPLICATES (or 1) as the LAST parameter to $ICON, in which case, an icon will be created regardless of whether an icon by the same title already exists in the group. If you specify REPLACE (or 2) as the last parameter, then an existing icon will be deleted, and a new one created in its place. Note that this slows down the icon creation process dramatically.

If you need to use a literal semi-colon in your $ICON lines, then put two hashes (i.e., "##") in each place where you want a literal semi-colon to be inserted. The installer will change the two hashes to one semi-colon at run time.

The Syntax is;

 $ICON=<filename>;<title>[;<group>;<.ICO file>][;[ALLOW-DUPLICATES][2]]

EXAMPLES:

 $ICON=$DEST\MYMAIN.EXE;Cool Prog v1.20

 $ICON=BACKUP.EXE;Backup Applet;Accessories

 $ICON=$DEST\MYPROG.HLP;My help file;$GROUP;$DEST\PROG.ICO

 $ICON=$DEST\README.TXT;Readme file;$GROUP;$DEST\TEXT.ICO

 $ICON=NOTEPAD.EXE REGISTER.TXT;Register;ALLOW-DUPLICATES

 $ICON=NOTEPAD.EXE REG.TXT;Registration;2

See also;

$DEST

$GROUP

$ICO

$SYSDIR

$WINDIR


$PRE-EXEC

This line is optional. It specifies the name(s) of any program(s) that should be run during the installation, as part of the installation process. These programs will be run immediately after the files have been copied from the disks. Install will try to wait for these programs to terminate, before continuing. Such attempted waiting will work for Windows programs, but will fail if used to run DOS programs under OS/2.

There can be only ONE such line, but it may contain up to 5 programs, each separated with a semi-colon.

Note that this command is obsolescent. It will sometimes fail when used to run certain programs under Windows 95 or Windows NT (especially Win32 programs). Thus, it is not recommended that this command be used anymore. Instead, you should write a Chief's Installer Pro batch file, and use the EXECWAIT-WINDOW command. That command achieves the same thing, and running programs from a batch file is far more flexible than doing it with $PRE-EXEC.

The Syntax is;

 $PRE-EXEC=<program name> [parameters] [;<other program>]

EXAMPLE:

 $PRE-EXEC=$WINDIR\EXPAND.EXE $DEST\REE.BI_;$TEMPDIR\GAGOFF.EXE > NUL

See also;

$DEST

$EXEC

$SYSDIR

$TEMPDIR

$WINDIR

EXECWAIT

EXECWAIT-WINDOW


$CLEANUP

This is optional. It specifies the name(s) of any temporary files(s) that should be deleted after the installation. Such deletions (if any) will be done immediately after any $PRE-EXEC lines have executed and returned. If there is no $PRE-EXEC line, then the deletions will be done after the $INI lines have been processed. If there are no $INI lines, then the deletions will be immediately after the $DISK lines have been processed. If the specified files do not exist, they are simply ignored.

You can have an unlimited number of $CLEANUP lines. Each line should contain only ONE entry. You can use wildcard characters here, but note that the program will NOT accept "*.*".

Please use this reserved word with care. I accept no responsibility for any problems caused by using it.

The $TEMPDIR can be used here with the Install program files in cases where you choose to use SETUP.EXE as a loader. This way, Install can cleanup the files which have been copied by SETUP.EXE to the TEMP directory.

The Syntax is;

 $CLEANUP=<filespecs>

EXAMPLES:

 $CLEANUP=$TEMPDIR\TMP*.*

 $CLEANUP=$DEST\TEMPFIL.INI

 $CLEANUP=$TEMPDIR\INSTALL.EXE

 $CLEANUP=$TEMPDIR\WINSTAL*.*

See also;

$DEST

$TEMPDIR


$EXEC

This line is optional. It specifies the name(s) of any program(s) that should be run immediately after the installation is completed (with any optional parameters to be passed to the programs). You can have only ONE such line, but you can put as many as 5 programs on this line, each separated by a semi-colon.

The Syntax is;

 $EXEC=<program name> [parameters] [;<other program>]

EXAMPLE:

 $EXEC=CONFIG.EXE -DIR=C:\TEMP; MYPROG1.EXE; MYPROG2.EXE -NEW

See also;

$DEST

$PRE-EXEC

$SYSDIR

$TEMPDIR

$WINDIR


$WINDOW

This line is optional. It should specify whether you want the ChiefPro main dialog to start up maximized or not. If the entry here is MAXIMIZE then the ChiefPro main dialog will start maximized - otherwise it will just start normally. NOTE: This command is obsolescent.

The Syntax is;

 $WINDOW=MAXIMIZE


$COPYBUFFER

This line is optional. It sets the size of the buffer used by Install to copy the files. The buffer size should be a whole number, representing the number of BYTES to be used. This number MUST be between 2048 and 32760. If it is set lower than 2048, then Install will replace the supplied value with 2048 - and if it is set higher than 32760, then Install will use 32760.

The higher the buffer, the faster the files are copied. However, the buffer size also dictates;

[a] the frequency with which the "percent" meter is updated

[b] the frequency with which Install will "yield" the CPU and allow Windows to do other things (each time COPYBUFFER bytes are copied, Install "yields" for 128 milliseconds.

Therefore, if the number is set too high, the percent meter will not be updated frequently enough, and the display might look odd. If, on the other hand, the setting is very low, then the percent meter will be updated frequently, but the file copying will become much slower.

The DEFAULT value is 8190, and this will be used if this setting is left empty. I suggest a setting of 16384 (i.e., 16kb) as a good setting which adequately compromises between speed of copying, and the frequency of the progress bar's being updated.

The Syntax is;

 $COPYBUFFER=<buffersize>

EXAMPLE:

 $COPYBUFFER=4095


$WINDOW-BACKGROUND

This line is optional. It can be used to set the background color of the ChiefPro main dialog. The default is to have a light gray background for the main dialog, and a white background for other dialogs (the light gray will also be used for other dialogs if you use the $PAINTDIALOGS command). Because the background is a Windows brush handle, the only valid values for this setting are 0, 1, 2, 3, or 4.

0 = White Brush

1 = Light gray Brush

2 = Gray Brush

3 = Dark gray Brush

4 = Black Brush

If you use this to change the window background, be sure to also set the $TEXT-BACKGROUND (below) to an appropriate setting. For example, if this setting is 2 (dark gray) then the text background should be set to 128,128,128 (so that the window and text backgrounds should match).

The Syntax is;

 $WINDOW-BACKGROUND=<value>

EXAMPLE:

 $WINDOW-BACKGROUND=1

See also;

$TEXT-BACKGROUND


$TEXT-BACKGROUND

This line is optional. It can be used to set the background color of the text in the ChiefPro main dialog. The default is to have a light gray background. Unless there is a pressing need to use another color, the color used here should be the same as that used for the $WINDOW-BACKGROUND.

 The color used here can either be either;

[a] one long integer value (you can use hexadecimal values in Pascal notation) - see below for explanation

 or

[b] three values represent RGB (red, green, blue) values,

 or

[c] any of the predefined color constants (i.e., Cyan White, Black, Red, Green, Blue, Yellow, Magenta, Gray, LightGray, DarkGray, DarkYellow, Purple, DarkRed, DarkBlue, DarkCyan, DarkPurple). Note that these constants are not case sensitive.

If using RGB values, they should be separated by commas, or semi-colons (e.g:  128,128,128 - for a dark gray background)

If using a hexadecimal value (those that begin with $00 and then are followed by SIX values). The SIX values here represent Blue, Green, Red - or reversed RGB. In this respect, FF turns the color to full intensity, 00 turns it off, and any other value varies the intensity.

Note that the color that results from any value depends on the display driver of the user (particularly the number of colors). For a 256 color setup, you can use the following EXAMPLE values;

1. White : $00FFFFFF

2. White : 255,255,255

3. Black : $00000000

4. Black : 0,0,0

5. Dark Gray : $00808080

6. Dark Gray : 128,128,128

7. Red : $000000FF

8. Red : $255,0,0

9. Blue : $00FF0000

10. Blue : 0,0,255

11. Light Cyan : $00FFFF00

12. Green : $0000FF00

13. Yellow : $0000FFFF

14. Magenta : $00FF00FF

15. Light Gray : $006F9FFF

17. Light Gray : 192,192,192

16. Gray : $00C0C0C0

The Syntax is;

 $TEXT-BACKGROUND=<color value>

EXAMPLES:

 $TEXT-BACKGROUND=Blue

 $TEXT-BACKGROUND=192,192,192

 $TEXT-BACKGROUND=128,128,128

 $TEXT-BACKGROUND=$00FFFFFF

See also;

$WINDOW-BACKGROUND

$BANNER-TEXT-COLOR

$BANNER-TEXT-BACKGROUND

$BANNER-WINDOW-BRUSH


$PAINTDIALOGS

This command is optional. It is for use in those cases when you want the progress dialogs to be painted with the same text and background colors as the main dialog (the default is that the status "percent" dialogs have a white background).  This command takes no parameter.

The Syntax is;

 $PAINTDIALOGS


$SETCHECKBOX

This line is optional. It automatically checks the checkbox titled "create Program Manager item". This line takes no parameter.

The Syntax is;

 $SETCHECKBOX


$NO-END-DIALOG

This line is optional, and is not very useful. All it does is to suppress the final dialogs which inform the user about whether the installation was successful or not, and that the installation is completed. The default behaviour of Install is to present these dialogs to the user. Use this reserved word to disable that feature.

If this feature is used, the warning dialog that comes up if the size of the files actually installed is less than 98% of the size stated in the $SPACE reserved word is also disabled. This line takes no parameter.

The Syntax is;

 $NO-END-DIALOG


$NO-PATH-DIALOG

This line is optional. It disables the dialog box which asks the user whether the target directory should be added to the PATH statement in AUTOEXEC.BAT. The default behaviour is to present this dialog. Use this reserved word to disable that feature. This line takes no parameter.


$SHOW-FILE-PERCENT

This line is optional. What it does is to show a small percent meter for the progress of each individual file being installed (i.e., in addition to the large percent meter which shows the progress of the whole installation process). This reserved word takes no parameter.

The Syntax is;

 $SHOW-FILE-PERCENT


$MAKE-UNINSTALL-LOG

This line is optional. What it does is to cause Chief's Installer Pro to create a log file of all the changes it is making to the system. This file is a binary file (to prevent tampering with it) and is called UNINSTAL.LOG. It is created in the target directory, and should be left there. This file will be used by the UNINSTALLER to uninstall the program, if the user so wishes.

If the user is installing over an existing installation and a copy of UNINSTAL.LOG already exists, Chief's Installer Pro will just add the new information to the end of the existing one. This may result in some information being duplicated in the file, but will not lead to any strange result. The uninstaller is smart enough to handle any duplicated information.

This reserved word can take as an optional parameter the name of the file to use as the LOG file for UNINSTAL.EXE. The parameter should be separated with a semi-colon, and should contain a filename only (no path). If no filename is provided, the default name UNINSTAL.LOG will be used. If a filename is used here, it MUST be supplied as a SECOND parameter to UNINSTAL.EXE

This reserved word can also take another optional parameter - the word OVERWRITE. When this is used, the installer marks the LOG file so that UNINSTAL.EXE will overwrite every file and directory which it has deleted, so that they cannot be undeleted. This parameter should be used with great care.

The Syntax is;

 $MAKE-UNINSTALL-LOG[;logfilename][;OVERWRITE]

 EXAMPLES:

 $MAKE-UNINSTALL-LOG

 $MAKE-UNINSTALL-LOG;OVERWRITE

 $MAKE-UNINSTALL-LOG;VER2.LOG

 $MAKE-UNINSTALL-LOG;VER2.LOG;OVERWRITE

See also;

THE UNINSTALLER


$USER-OPTION

The user option lines are optional. By default, Chief's Installer Pro will install all the files which are specified in the $DISK lines. However, sometimes, the user will only want to install the binaries, or the documentation, or the libraries, or any other partial installation.

The $USER-OPTION reserved word gives you the means of providing user-selectable installation options, for various parts of your program. So you can split your program's installation into program files, help files, libraries, dictionaries, bitmaps, etc., etc. If you are using the "Wizard" interface, then the user will be presented with one dialog box for each user option -otherwise, the user will be given a dialog with check boxes which allows him/her to choose, or just to install everything. This means that your users will now have the facility for incremental installation of different parts of your program.

There can be up to 10 $USER-OPTION lines, each of them specifying a different optional part of your program. If you specify a user option, you must also use the $OPTIONAL reserved word (see below) to specify the files which make up that user option. In such cases, appropriate check boxes will appear.

Each $USER-OPTION line must contain the title of the option (this is the text that will appear beside it's check box), followed by a semi-colon, and then the amount of disk space (in bytes) which the option will require. This amount will be added to the amount specified in the $SPACE reserved word, such that if you make all the different parts of your installation optional, then the $SPACE line must specify 0 (zero) as the required disk space.

NOTE: The ChiefPro IDE AUTOCALC.EXE can be used to calculate the required space automatically.

$USER-OPTION lines can take an extra (and optional) parameter - the word UNCHECKED. If used, it must be the third parameter, separated from the size of the option's files by a semi-colon. If it is used, the checkbox for the option is not checked when the installer starts. The user can check it afterwards.

You can optionally assign a user option to particular disk(s) in the installation set. This means that if the option is de-selected at run time, the user will not be prompted for the disk(s) that you assigned it to. In order to use this feature, you need to supply the disk numbers as the LAST parameter to the user option (separated from the needed disk space by a semi-colon). If you use this feature, you must ensure that the disk(s) that you specify only contain files pertaining to the option and that all the files pertaining to that option are on the specified disk(s). Please note that failure to comply with these requirements WILL lead to the installation failing most dramatically. Note that this feature should not be used if you have only one install disk.

If more than one disk is specified, the disks must be separated from each other by a space. Up to 10 disks can be specified for each user option.

The Syntax is;

 $USER-OPTION n = <title>;<disk space needed>[;UNCHECKED][;$DISK#]

where:

n = any number from 1 to 10

<title> = the text to show beside the option's check box

<disk space needed> = the amount of disk space required by the option (in bytes)

[$DISK#] = the disk number (replace the # with the relevant number) for the option

EXAMPLES:

 $USER-OPTION1=Program files;171000

 $USER-OPTION2=Optional DLL files;10000

 $USER-OPTION3=Optional executables;104000;UNCHECKED

 $USER-OPTION4=Viewers;314384;$DISK3

 $USER-OPTION5=Database Engine;2314384;UNCHECKED;$DISK4 $DISK5

See also;

$OPTIONAL

$OPTIONHELP

$SPACE

$USE-WIZARDS


$OPTIONAL

This reserved word is used to specify the files that make up any user-selectable installation options specified with the $USER-OPTION reserved word. Each line should specify a list the files that make up the particular option number, each file name separated from the next one by a semi-colon. Some limited use of wildcards is allowed here - if you want to use wildcards, then it must be an asterix, followed by a dot, and then the full extension of the files - e.g., *.TXT;*.INI;*.DLL;*.EXE. Great care must be taken not to confuse the program when using wildcards in this way. Careless use of wildcards might lead to files going where they were not meant to go. It is better to name individual files whenever possible. A maximum of 30 file specifications is allowed on each line - but note that each line cannot be longer than 220 characters in total.

You can have an unlimited number of $OPTIONAL lines for each option specified by a $USER-OPTION line. This facility is to allow for situations where all the file names will not fit on one line. The fact that you can have multiple lines for each option number, and that each line can contain up to 30 file names, means that you can in theory have a large number of files making up each option. However, please do not go overboard with this, because each file name on each $OPTIONAL line has to be checked against every file being installed, to see whether it should be installed or not. Therefore, if there are too many files in the $OPTIONAL lines, the installation process will be slowed down (this might not be a problem on machines with fast CPUs).

The Syntax is;

 $OPTIONAL n = <filenames>

where:

n = any number from 1 to 10 (corresponding to the relevant $USER-OPTION)

<filenames> = the files which make up the option - each separated by a semi-colon

EXAMPLES:

 $OPTIONAL1=INSTALL.EXE;WINSTALL.HLP;INSTALL.TXT;WINSTALL.INF

 $OPTIONAL1=SAMPLE1.INF;SAMPLE2.INF;SAMPLE3.INF;SAMPLE4.INF

 $OPTIONAL2=ENGLISH.dll;dansk.dll;deutsch.dll

 $OPTIONAL3=UNINSTAL.EXE;SETUP.EXE;

 $OPTIONAL4=*.WRI;*.TXT;*.DOC;*.PS;READ.ME

See also;

$OPTIONHELP

$USER-OPTION


$BANNER-FONT

This reserved word specifies the font to use for the banner text that will be displayed in the background of Chief's Installer Pro's dialog window (on the Windows desktop). Most of the Windows TRUETYPE fonts can be used here. The font will be in bold faced characters, and will be italicised.

If the named font does not exist on the system, then Windows will try to use a substitute font, or at the least, a COURIER font. If this line is empty, then Chief's Installer Pro will default to using the TrueType TIMES NEW ROMAN font.

The Syntax is;

 $BANNER-FONT=<font name>

EXAMPLE:

 $BANNER-FONT=ARIAL

See also;

$BANNER-FONT-SIZE

$BANNER-MESSAGE

$BANNER-TEXT-COLOR

$BANNER-TEXT-BACKGROUND

$BANNER-SHADOW-COLOR

$BANNER-WINDOW-BRUSH

$WINDOW


$BANNER-FONT-SIZE

This reserved word specifies the "point" size of the font used to display the banner. The size should be a whole number.

This line is optional. It also depends on the file WINSTALP.DLL. That file contains all the banner functionality, and it's presence is not needed for Chief's Installer Pro to function (you just won't get any banner). If the file is not found by Chief's Installer Pro, this line will have no effect. It is also ineffective if the $WINDOW=MAXIMIZE reserved word is used. This is because when Chief's Installer Pro's main window is maximized, the banner is not displayed at all (for obvious reasons).

If this line is empty, Chief's Installer Pro defaults to using 35 point. Note that you should be careful to cater for the smallest display resolutions (practically, 640x480 displays). Therefore the font size should be small enough for the banner message to fit in a standard VGA screen).

The Syntax is;

 $BANNER-FONT-SIZE=<font size>

EXAMPLE:

 $BANNER-FONT-SIZE=45

See also;

$BANNER-FONT

$BANNER-MESSAGE

$BANNER-TEXT-COLOR

$BANNER-TEXT-BACKGROUND

$BANNER-SHADOW-COLOR

$BANNER-WINDOW-BRUSH

$WINDOW


$BANNER-MESSAGE

This line specifies the message to be displayed as the banner for your installation. This message is displayed in the banner window, on the Windows desktop. The message should be short enough to fit on one line, taking into account the font being used, and its size.

If this line is empty, ChiefPro will default using the title of your program as specified on the $TITLE line, and the words "Welcome to" will be prepended to that title.

The Syntax is;

 $BANNER-MESSAGE=<banner message> [;CODE]

In this syntax, "CODE" is optional. Possible values are CENTERED (centre the banner message); or VERTICAL (display the text vertically). If VERTICAL is used, you also neet to provide an "x" coordinate for the text

EXAMPLES:

 $BANNER-MESSAGE=This is a Great Program!

 $BANNER-MESSAGE=This is a Great Program;CENTERED

 $BANNER-MESSAGE=Chief Pro;VERTICAL;5

See also;

$BANNER-FONT

$BANNER-FONT-SIZE

$BANNER-TEXT-COLOR

$BANNER-TEXT-BACKGROUND

$BANNER-SHADOW-COLOR

$BANNER-WINDOW-BRUSH

$TITLE

$WINDOW


$BANNER-TEXT-COLOR

This reserved word specifies the color to be used for the banner text. This color can be either one long integer value (TColorRef in Windows) or three RGB values. The values that can be  used here are the same as those that can be used in the $TEXT-BACKGROUND reserved word. Please see the documentation on it for further details.

You can also use any of the predefined color constants (i.e., Cyan White, Black, Red, Green, Blue, Yellow, Magenta, Gray, LightGray, DarkGray, DarkYellow, Purple, DarkRed, DarkBlue, DarkCyan, DarkPurple). Note that these constants are not case sensitive.

If this line is empty, ChiefPro defaults to using a white text color ($00FFFFFF).

The Syntax is;

 $BANNER-TEXT-COLOR=<color value>

EXAMPLE:

 $BANNER-TEXT-COLOR=Black

 $BANNER-TEXT-COLOR=$00C0C0C0

See also;

$BANNER-FONT

$BANNER-FONT-SIZE

$BANNER-MESSAGE

$BANNER-TEXT-BACKGROUND

$BANNER-WINDOW-BRUSH

$BANNER-SHADOW-COLOR

$TEXT-BACKGROUND

$WINDOW


$BANNER-TEXT-BACKGROUND

This reserved word specifies the color to be used for the banner text background. This color can be either one long integer value (TColorRef in Windows) or three RGB values. The values that can be used here are the same as those that can be used in the $TEXT-BACKGROUND reserved word. Please see the documentation on it for further details.

You can also use any of the predefined color constants (i.e., Cyan White, Black, Red, Green, Blue, Yellow, Magenta, Gray, LightGray, DarkGray, DarkYellow, Purple, DarkRed, DarkBlue, DarkCyan, DarkPurple). Note that these constants are not case sensitive.

If this line is empty, ChiefPro defaults to using a blue text background ($00800000).

The Syntax is;

 $BANNER-TEXT-BACKGROUND=<color value>

EXAMPLE:

 $BANNER-TEXT-BACKGROUND=$00800000

See also;

$BANNER-FONT

$BANNER-FONT-SIZE

$BANNER-MESSAGE

$BANNER-TEXT-COLOR

$BANNER-SHADOW-COLOR

$BANNER-WINDOW-BRUSH

$TEXT-BACKGROUND

$WINDOW


$BANNER-SHADOW-COLOR

This reserved word is optional. It is used to give the banner text a "shadow". The color value here is in the same format as $BANNER-TEXT-COLOR and $BANNER-TEXT-BACKGROUND. The shadow is disabled by default (by giving the shadow color a default value less than 0). If the value is 0 or higher, then the shadow becomes enabled, and the $BANNER-TEXT-BACKGROUND line becomes disabled.

You can use any of the predefined color constants (i.e., Cyan White, Black, Red, Green, Blue, Yellow, Magenta, Gray, LightGray, DarkGray, DarkYellow, Purple, DarkRed, DarkBlue, DarkCyan, DarkPurple). Note that these constants are not case sensitive.

The Syntax is;

 $BANNER-SHADOW-COLOR=<color value>

EXAMPLES:

 $BANNER-SHADOW-COLOR=255,0,0

 $BANNER-SHADOW-COLOR=Yellow

See also;

$BANNER-FONT

$BANNER-FONT-SIZE

$BANNER-TEXT-COLOR

$BANNER-TEXT-BACKGROUND

$BANNER-SHADOW-COLOR

$BANNER-WINDOW-BRUSH

$TITLE

$WINDOW


$BANNER-WINDOW-BRUSH

This reserved word specifies the color to be used to paint the background of the banner window. The painting is not done as a straight color. Rather, it starts as the color you specify (at the top of the screen), and gradually changes, until it reaches black (at the bottom of the screen). This presents a pleasant visual effect. This is even more so if you use the same or nearly the same color as the one used in the $BANNER-TEXT-BACKGROUND line.

This color can be either one long integer value (TColorRef in Windows) or three RGB values. The values that can be used here are the same as those that can be used in the $TEXT-BACKGROUND reserved word. Please see the documentation on it for further details.

You also can use any of the predefined color constants (i.e., Cyan White, Black, Red, Green, Blue, Yellow, Magenta, Gray, LightGray, DarkGray, DarkYellow, Purple, DarkRed, DarkBlue, DarkCyan, DarkPurple). Note that these constants are not case sensitive.

If this line is empty, ChiefPro defaults to using a blue color ($00800000).

The Syntax is;

 $BANNER-WINDOW-BRUSH=<color value>

EXAMPLES:

 $BANNER-WINDOW-BRUSH=100010

 $BANNER-WINDOW-BRUSH=DarkBlue

See also;

$BANNER-FONT

$BANNER-FONT-SIZE

$BANNER-MESSAGE

$BANNER-TEXT-COLOR

$BANNER-TEXT-BACKGROUND

$BANNER-SHADOW-COLOR

$TEXT-BACKGROUND

$WINDOW


$BITMAP

This reserved word specifies a Windows bitmap file to display in the banner window. The bitmap will be stretched to fill the screen, and therefore the painting will often be slow. The banner text will then be displayed on top of the bitmap. If a bitmap file is specified the painting of the banner window background, as specified in the $BANNER-WINDOW-BRUSH line will not take place, since the bitmap will be occupying the whole screen. Only standard Windows .BMP files are supported.

$BITMAP can take an extra optional parameter: NORMAL. If used, this should appear AFTER the name of the bitmap file, separated by a semi-colon (e.g., $BITMAP=$sourcedir\winstall.bmp;normal). This parameter disables the stretching of the bitmap, and the bitmap will be displayed in its normal size, centered on the screen. Note that if the bitmap's dimensions are small, it may be hidden behind the dialog boxes on the screen.

You can have multiple $BITMAP lines, each pointing to a different bitmap, and (optionally) stating whether it should be stretched or not. Each of them will be displayed in order as the installation proceeds.

If the first bitmap pointed to by a $BITMAP command is not found, then no bitmap will be displayed, regardless of the number of $BITMAP lines that you have.

This command is an added extra. The "bitblitting" is sometimes slow, and may have problems with large bitmap files, and so it may not be ideal in many cases. But it is there anyway. You may simply ignore it. If no $BITMAP line is found, then ChiefPro will by default look for a file called WINSTALL.BMP to use for the background bitmap. If WINSTALL.BMP is not found, then the program simply use the banner window brush value to paint the background of the banner window.

The Syntax is;

 $BITMAP=<bitmap file name>[;NORMAL]

EXAMPLES:

 $BITMAP=$TEMPDIR\MYPROG.BMP

 $BITMAP=WINSTALL.BMP;NORMAL

See also;

$BANNER-MESSAGE

$BANNER-TEXT-COLOR

$BANNER-TEXT-BACKGROUND

$BANNER-SHADOW-COLOR

$BANNER-WINDOW-BRUSH

$WINDOW


$VERIFY-INSTALL-DISKS

This line is optional. By default, when the user is prompted to insert a particular numbered disk (e.g., "Please insert disk 4 in drive"), Chief's Installer Pro does not perform any check to verify that the disk being inserted is actually the correct one. You can however use this reserved word to force Chief's Installer Pro to perform these checks.

When this reserved word is used, Chief's Installer Pro will check each installation disk (from disk 1 onwards) to verify that it is the correct disk. This check is performed by looking for a file on the disk, which corresponds to the $DISK# being installed, but with the extension .DSK. Thus for example, if Chief's Installer Pro asked for disk 4 to be inserted in the drive, it will check for the existence of a file called $DISK4.DSK on any disk that is inserted. If the file exists, then this is taken as the correct disk, and the installation continues. If the file is not found on the disk, then the user is prompted to insert the disk again, and this will go on until either the correct disk is inserted, or the user clicks on "Abort".

The contents of the .DSK file are normally irrelevant. It can be an empty file - but the file must exist. However, you can optionally provide for the contents of the .DSK file to be checked. To do this, you need to supply 'READ-FILES' as a parameter. If this feature is turned on, then the installer will treat the .DSK file for every disk as a Windows .INI file, and check in the [disk-id] section for the keyname 'disk-id'. The entry here must match the name of the .DSK file being examined - e.g., a .DSK file called $DISK1.DSK must have the following entries;

[disk-id]

disk-id=$DISK1.DSK

Note that if the entry does not match, the installer will assume that the disk is the wrong one and will keep prompting for the disk. Thus, you should use this feature very carefully.

EXAMPLES:

 $VERIFY-INSTALL-DISKS

 $VERIFY-INSTALL-DISKS;READ-FILES

See also;

$DISK


$AUTO-CLICK-BUTTON

The main window of Chief's Installer Pro has got four push buttons, labelled (in English) "Start Install", "Abort", "Help", and "View Read Me". You can use this reserved word to send a mouse click to any one of these buttons. When you send a mouse click in this way, the effect is exactly as if the user had clicked on that push button with the left mouse button. This will activate whatever the push button is supposed to do.

The line takes one parameter - the ID of the button to send the mouse click to. For this purpose, 1=Start Install, 2=Abort , 3=Help, and 4=View Read Me. This line is useful for example, for starting the installation without giving the user any opportunity to make any selections or choices, or for clicking on the "Help" or "Readme" button so that your help file or your readme file (WINSTALL.TXT) will be loaded automatically (i.e., to force your users to read your documentation).

This line is optional, and should not be used when using the "Wizard" interface.

The Syntax is;

 $AUTO-CLICK-BUTTON=<button ID>

EXAMPLE:

 $AUTO-CLICK-BUTTON=1

See also;

COMMAND LINE OPERATION


$NO-CTL3D.DLL

This line is optional, and is probably not very useful. It is for the purpose of giving people the option of dispensing with the use of CTL3DV2.DLL. If this line is found, the Chief's Installer Pro will not use the 3D dialog effects in CTL3DV2.DLL. The question is "why would anyone want to do this?". The answer is that some Windows video drivers are buggy and might not necessarily want to co-exist peacefully with CTL3DV2.DLL in all circumstances.

Not mentioning any names, but I know of one company which produces buggy Windows drivers for their display cards which sometimes fall into the category described above. I personally do not use this reserved word, and it may indeed be unnecessary to use it. However, I think that it is good to have the option.

This line takes no parameter.


$RESTARTWIN-MESSAGE

Chief's Installer Pro provides support for restarting Windows if any active shared file was overwritten. A dialog asking for confirmation appears automatically if any active shared file was overwritten during the installation. The text on this dialog can be changed by this reserved word. If this reserved word is not used, a default message is used, which tells the user that at least once active DLL has been replaced, and that the user should restart Windows immediately.

The message on this line can be up to 200 characters. Obviously, that is too wide for a dialog box. Therefore I have decided to support one formatting control here. You can insert carriage returns at any point in the message by using the "newline" code (i.e., \n). If a literal "\n" is desired, an exclamation mark should precede the "n" (i.e., "\!n"). Furthermore, the "\n" is case sensitive - so, for example, "\N" will not be converted.

This line can be used to DISABLE the dialog that asks if the user wants to restart Windows. To disable the feature, use $RESTARTWIN-MESSAGE=DISABLE.

Please note that if you disable this feature in this way, it is up to you to inform your user that Windows must be restarted when an active DLL has been overwritten. How you will ascertain this fact is beyond me. I have only included this feature because a user asked for it. If you use it, you are on your own.


HUGE FILES

Sometimes users have huge files that are too big to fit onto one floppy disk, even after compression. Chief Pro offers support for splitting such huge files into smaller parts (maximum size to be specified by you). These smaller parts can then be put onto floppies (compressed or otherwise) and installed in the ordinary way. After they have been installed, the small parts can then be used to rebuild the file again - either by using the command line utility SPLIT.EXE, or, preferably, by using the $BUILD-FILE reserved word.

Huge files can be split into smaller parts by using SPLIT.EXE or by an operation from the Chief Pro IDE. It is easier to accomplish from the IDE - but the command line utility SPLIT.EXE is supplied for those who prefer to use it that way, or who might want to run a batch job on it.

When a file has been split, a LOG file will be automatically created (typically with the extension .~#0). This log file is needed to rebuild the file, and MUST be installed along with the small parts, and into the same directory. Also, you need to add the full size of the whole file (or at least an approximation of it) to your $SPACE statement - otherwise the percent meter will be inaccurate.

TIPS: to use this successfully, all you need is a few steps [a] split the file with SPLIT.EXE or from the IDE [b] copy all the small parts to your installation disks [c] copy the LOG file to your installation disks [d] add the names of all the small parts, and of the LOG file to your $DISK# lines [e] make a $BUILD-FILE statement pointing to the LOG file, and specifying the output directory. That's all!

To see the syntax for SPLIT.EXE, just run it without any parameter.

See also;

$BUILD-FILE

$BUILD-FILE-EX


EXISTING-FILES

Chief's Installer Pro will check in the target directories for existing copies of every file being installed. If no copy of the file exists, then the installation will proceed. If the file exists, the existing copy and the copy being installed will both be checked to see which one is newer.

Chief's Installer Pro uses two methods of deciding whether or not a file is older than another. In the case of shared binary files (i.e., the ones that go into the Windows and/or the Windows SYSTEM directory), the version information in the files will first be compared. If there is no version information in the files, then their date stamps of the file will be compared. In the case of other files, only the date stamps will be compared (except in the case of proprietary DLLs if you use the $CHECK-MY-DLL-VERSIONS reserved word).

When Chief's Installer Pro has ascertained which of the two copies of a file is newer, what happens next depends on the choices you made in your INF file, and/or the choices made by your user. Normally, Chief's Installer Pro will simply display a dialog box informing the user that a copy (or a newer copy) of the file already exists in the target directory, and then show the user the details of the two copies.

You can decide in advance that certain files specified by you should be over-written automatically ($AUTO-REPLACE) or that all older versions of files should be over-written automatically ($FORCE-OVERWRITE-OLDER-FILES). In this case, a file is regarded as "older" if it is not newer. In the case of files which both have version information, if the version number is the same (e.g., they are both 1.1) then the date stamps will be used to decide which is "older". If the date stamps are the same, then the one that already exists in the target directory is treated as "older" than the one being installed. In the case of files without version information, if both files have the same date stamp, then the existing copy is still regarded as "older".

SHARED FILES;

For the purposes of the installation, Chief's Installer Pro will regard a file as a shared file only if the following conditions apply;

[1] the file is being installed into the Windows or Windows SYSTEM directory, and

[2] the file's extension is either; [a] .DLL or [b] .EXE or [c] .VBX or [d] .OCX or [e] .DRV or [f] .CPL

See also;

$AUTO-REPLACE

$CHECK-MY-DLL-VERSIONS

$FORCE-OVERWRITE-ALL-EXISTING-FILES

$FORCE-OVERWRITE-OLDER-FILES

$SKIP-IDENTICAL-FILES

$SKIP-NEWER-FILES

$SKIP-OLDER-FILE

$VERSION-INFO-TITLE

$VERSION-INFO-MESSAGE

$VERSION-COPY-ERROR-MESSAGE


$CHECK-MY-DLL-VERSIONS

This line is optional. By default, when another copy of a .DLL file already exists in the target directory, Chief's Installer Pro will check for version information in that DLL only if the target directory is the Windows directory or the Windows SYSTEM directory. That is, only SHARED DLLs will be normally checked for version information. DLLs which are going into your application's directory for example will only be checked for their date stamps.

If you want ALL DLL files to be checked for their version information (i.e., regardless of their destination directory), then you should use this reserved word. This line takes no parameter.

See also;

EXISTING FILES


$VERSION-INFO-TITLE

This line is optional. By default, when Chief's Installer Pro is reporting the version information on an existing copy of a shared file, the version number is reported under the heading "File Version". You can use this reserved word to change that string to something else. This is really useful only for those who want to display that string in a language other than English. If you change this string, please try to make the replacement as short as possible.

The Syntax is;

 $VERSION-INFO-TITLE=<title>

EXAMPLE:

 $VERSION-INFO-TITLE=Product Version Number

See also;

EXISTING FILES

$VERSION-INFO-MESSAGE


$VERSION-INFO-MESSAGE

This line is optional. When Chief's Installer Pro has retrieved the version information on an already existing copy of a shared file, a dialog informs the user that a copy of the file already exists and then asks for over-write permission. By default, this dialog will not contain any further explanation of the situation, and will not make any recommendation as to the course of action to be taken.

You can use this reserved word to provide some explanation and/or a recommended course of action. If anything appears on this line, it will be added to the dialog.

The message on this line can be up to 200 characters. Obviously, that is too wide for a dialog box. Therefore I have decided to support one formatting control here. You can insert carriage returns at any point in the message by using the "newline" code (i.e., \n). If a literal "\n" is desired, an exclamation mark should precede the "n" (i.e., "\!n"). Furthermore, the "\n" is case sensitive - so, for example, "\N" will not be converted.

The Syntax is;

 $VERSION-INFO-MESSAGE=<recommendation/explanation>

EXAMPLE:

 $VERSION-INFO-MESSAGE=You should click on "NO" \n if the target file is NEWER.

See also;

EXISTING FILES

$VERSION-INFO-TITLE


$FINAL-MESSAGE

If you want to give your user any final message (after the installation is complete) then you can put that message on this line. The message will be displayed in a dialog box at the tail end of the installation - just after the $EXEC line is executed.

The message on this line can be up to 200 characters. Obviously, that is too wide for a dialog box. Therefore I have decided to support one formatting control here. You can insert carriage returns at any point in the message by using the "newline" code (i.e., \n). If a literal "\n" is desired, an exclamation mark should precede the "n" (i.e., "\!n"). Furthermore, the "\n" is case sensitive - so, for example, "\N" will not be converted.

The Syntax is;

 $FINAL-MESSAGE=<message>

EXAMPLE:

 $FINAL-MESSAGE=Please shut down all applications and restart Windows.


$VERSION-COPY-ERROR-MESSAGE

This line is optional. By default, when Chief's Installer Pro is unable to successfully install a file, all that the user will get is an error message that there was an error writing to the file, and then the installation will proceed with the other files.

In the case of shared files, the problem may be that the file is currently in use and therefore cannot be over-written. With shared files, a temporary copy will normally exist in the TEMP directory (and will NOT have been deleted by the installer if the attempt to install it was unsuccessful). Chief's Installer Pro will therefore by default display a message advising the user to copy the file manually after closing Windows.

Note that the situation described above will only be exist, if [a] the file is a shared file, and, [b] a copy of it already exists in the Windows or Windows SYSTEM directory, and, [c] an attempt to install over the existing copy was unsuccessful.

You may want to change this message described above to something that suits you, and this reserved word allows you to do that. A carriage return will automatically be added at the end of this message, followed by the full pathname of the temporary copy of the file.

Note that because the last thing that appears in the dialog box is the full path name of the temporary file in the TEMP directory, if you use this line to change the error message, you need to express it in such a way that it leads up to the file name.

The message on this line can be up to 200 characters. Obviously, that is too wide for a dialog box. Therefore I have decided to support one formatting control here. You can insert carriage returns at any point in the message by using the "newline" code (i.e., \n). If a literal "\n" is desired, an exclamation mark should precede the "n" (i.e., "\!n"). Furthermore, the "\n" is case sensitive - so, for example, "\N" will not be converted.

The Syntax is;

 $VERSION-COPY-ERROR-MESSAGE<message>

EXAMPLE:

 $VERSION-COPY-ERROR-MESSAGE=Please copy it from the TEMP directory later \n. A temporary copy exists as:

See also;

EXISTING FILES


$FORCE-OVERWRITE-OLDER-FILES

This line is optional. By default, when a copy of the file being installed already exists in the target directory, Chief's Installer Pro will ask the user whether the existing copy should be over-written or not. This will be the case even when the existing file is an older version which really ought to be replaced. This could be a bit of a nuisance sometimes, and so you might want older versions of files to be replaced automatically. You use this reserved word to achieve that.

Note that this reserved word is different from the $AUTO-REPLACE reserved word, in that, this one applies to all files, while the former applies only to selected files.

This line takes no parameter.

See also;

EXISTING FILES

$AUTO-REPLACE

$CHECK-MY-DLL-VERSIONS

$FORCE-OVERWRITE-ALL-EXISTING-FILES

$SKIP-IDENTICAL-FILES

$SKIP-OLDER-FILE


$SKIP-IDENTICAL-FILES

This reserved word is optional. It causes a file to be skipped if a copy of it already exists in the target directory, and that copy is exactly the same version as the copy on the installation disk. In order to decide whether two files are exactly the same version, their date/time stamps, file sizes, and version information (if the files are shared DLLs) are compared. If there is any discrepancy in any of these, the files are treated as not being the same, and will not be skipped.

The comparisons work correctly in all my tests - but if you are going to use this feature, please test it thoroughly with your particular set of files.

See also;

$AUTO-REPLACE

$FORCE-OVERWRITE-ALL-EXISTING-FILES

$FORCE-OVERWRITE-OLDER-FILES

$SKIP-OLDER-FILE


$README-BUTTON-TEXT

Chief's Installer Pro provides support for displaying a README file to the user before the installation begins. The readme file should be a plain ASCII file, should not be larger than 8192 bytes, and should be called WINSTALL.TXT. A button with the caption "View Read Me" is presented for this purpose.  You can change the caption (text) on the "readme" button with this reserved word. The text used here must not be longer than 20 characters.

You can cause the contents of the file to be displayed automatically by setting $AUTO-CLICK-BUTTON to 4 (otherwise the user will have to click on the "readme" button to display the text). If the file WINSTALL.TXT is not found, then the "readme" button will be removed at run time.

The Syntax is;

 $README-BUTTON-TEXT=<button caption>

EXAMPLE:

 $README-BUTTON-TEXT=&Installation Notes

See also;

$README-FONT


$README-FONT

This reserved word is optional. It is used to change the font in which the text in the "Readme" dialog is displayed, from a proportional font (MS Sans Serif, 9 point) to a FIXED or MONO spaced font (Courier 8 point).

The Syntax is;

 $README-FONT=FIXED

See also;

$README-BUTTON-TEXT


$REG-DATA

This reserved word is optional. It provides support for making entries into the Registration Database. You can have an unlimited number of $REG-DATA lines, and each line can contain only a single entry. You can use only the keys/sub-keys that you want to create (e.g., associating a file extension with your program, etc). In this case, the installer will prepend HKEY_CLASSES_ROOT\ to each of your entries, but you may wish to provide the full entry, including the root key yourself. Under Win95 and Windows NT, the root key can be any of the predefined roots (e.g., HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, etc. - check your compiler's API documentation on the REGISTRY functions). Under Windows 3.1x, the only root you can use is HKEY_CLASSES_ROOT - please note this point. Other roots do NOT exist under Windows 3.1x

You can also (optionally) specify, as the LAST parameter, a VALUE TYPE for the data you want to enter into the registry. By default, the value type is REG_SZ (i.e., a null terminated string), but others can be specified for Win95 or NT (e.g., REG_DWORD, REG_BINARY, etc. - check your API documentation). Please note that REG_SZ is the only value type available under Windows 3.1x.

Entries made in the registration database in this way will be removed by the uninstaller if and when the user chooses to uninstall the program.

This command can also be used in the $TARGET line, to fetch a registry entry pointing to a directory containing a previous installation of the product. This entry will normally have been made in the registry during the installation. Then, if the program is being upgraded, the original directory can be retrieved from the registry. Please check the documentation on $TARGET for more details.

The Syntax is;

 EITHER (to create a key)

 $REG-DATA=<KeyName>[;<valueName>]

 OR (to assign a value)

 $REG-DATA=<KeyName>;<valueName>;<ValueData>[;<ValueType]

NOTE: you have to create a key before you can assign a value to anything in it.

EXAMPLES:

 $REG-DATA=.inf;ChiefPro

 $REG-DATA=.chf;ChiefPro

 $REG-DATA=WCL;Chief's Windows Command Line Processor

 $REG-DATA=HKEY_LOCAL_MACHINE\Software\ChiefPro

 $REG-DATA=HKEY_LOCAL_MACHINE\Software\ChiefPro;BinDir;$DEST\BIN

 $REG-DATA=HKEY_LOCAL_MACHINE\Software\ChiefPro;HomeDir;$DEST;REG_SZ

 $REG-DATA=HKEY_LOCAL_MACHINE\Software\ChiefPro;RunCount;5;REG_DWORD

 $REG-DATA=HKEY_LOCAL_MACHINE\Software\ChiefPro;Bin32Data;232;REG_BINARY

See also;

$TARGET

IF REGENTRY

WRITEREG


$DIALOG-ICON

This reserved word is optional. It can be used to change the icon that is displayed on the installer's dialogs. The reserved word takes one parameter - a number which corresponds to that of the required icon. The icons must be in a DLL called WINSTALC.DLL, and must be given given numeric names from 3 onwards (e.g., 3, 4, 5, 6, etc.). Icons 1 and 2 (5.25 and 3.5 inch icons) are inside INSTALL.EXE itself. There can be up to 250 icons in WINSTALC.DLL, but only one can be used. If this reserved word is not used, the the default will be the 3.5" icon.

The Syntax is;

 $DIALOG-ICON=<icon number>

EXAMPLE:

 $DIALOG-ICON=4


$FONT

This reserved word is optional. It is used to install TRUETYPE fonts. The reserved word takes 2 parameters. The first is the full path name of the font file (.TTF) which will be used, and the second is the name or description of the font. Note that the description of the font must be accurate - exactly as it appears in the Windows Control Panel.

Under Win 3.1x, the program will try to create a .FOT file in the Windows SYSTEM directory, and make the necessary entries in the Windows INI files. Under Windows NT and Win95, it will register the fonts with the system, and make the necessary entries into the registry. You will then need to shutdown and restart for the fonts to take effect. If the font is already installed, it will simply be reinstalled again.

You can have an unlimited number of $FONT lines. Please NOTE that, for Win 3.1x, installations, you need to take two further steps: [a] make sure that the TTF files are actually installed onto the system by putting them on your $DISK lines (e.g., $DISK1=*.TTF); [b] direct the font files to the Windows SYSTEM directory with the $SYSDIR command (e.g., $SYSDIR=*.TTF). These two steps are not necessary under Win95 or Windows NT.

The Syntax is;

 $FONT=<fontfile.TTF>;<font name>

EXAMPLES:

 $FONT=$SOURCEDIR\ARIALBD.TTF;Arial Bold (True Type)

 $FONT=$SOURCEDIR\CHIEFBD.TTF;Bold Chief (True Type)


$SOURCEDIR

This reserved word is optional. It points to the directory from which the program was actually installed, but can also be used to change the source directory from the default (useful for internal corporate customisations).

EXAMPLES:

 $INI=$DEST\PROG.INI;History;SourceDir;$SOURCEDIR

 $SOURCEDIR=F:\USR\LOCAL\BIN\NEWPROG

See also;


THE ANATOMY OF INSTALLATIONS

One of the most pressing questions often asked by users is "how do I set up an installation, and how easy is it to achieve?". The obvious answer to the second question is that "it depends on what you want to do". For the average program, the installation can quickly and easily be produced by creating a new project with the AUTOCALC Project Manager. This is the first recommended step - even for those who already have working installations, it is always good to create an AutoCALC project for your program. This is because AutoCalc is always being improved, and will eventually get to the point where almost everything can be done for you by the AutoCalc Project Manager.

Creating a new installation involves a number of steps:

[a] Preparing a list of ALL the files that your program will need.

[b] Deciding which disk(s) these files will be placed on

[c] Copying the files to the relevant installation disk(s)

[d] Deciding which directory on the user's system each file will be installed to

[e] Creating a ChiefPro installation script (WINSTALL.INF) file from which the installer will obtain all its configuration information

[f] Making sure that all the necessary ChiefPro binaries and supporting files are placed on the first disk in the installation set. For this purpose, the files which are absolutely necessary for an installation are [i] INSTALL.EXE and [ii] WINSTALL.INF. These two are sufficient for an installation. However, if you have only these files on your disk, many features (the "bells and whistles") will be missing.

For an installation program having  the full range of features offered by Chief Pro, you need all these  files on your DISK #1;

1. SETUP.EXE - loader for the installer

2. SETUPINF.INF - INF file for SETUP.EXE

3. INSTALL.EXE - main ChiefPro installer

4. WINSTALL.INF - INF file for INSTALL.EXE

5. WINSTALL.HLP - (optional) help file for the installation

6. WINSTALZ.DLL -  DLL for UNZIP functions

7. WINSTALC.DLL -  (optional) DLL for custom dialog icons

8. WINSTALL.TXT -  (optional) ASCII file for the README button

9. WINSTALL.MSG -  (optional) ASCII file for the message dialog during the install (see the sample file WINSTALL.MSG for the format of this file)

10. WINSTALL.WEL - ASCII file for the welcome message  (optional)

11. WINSTALL.CPR - ASCII file for the copyright message  (optional)

12. WINSTALL.LNG - INF file for string tables (optional)

13. WINSTALU.DLL - default user DLL (optional)

ALL these files, except #1 and #2 (SETUP.EXE and SETUPINF.INF) CAN be compressed on your DISK #1 (using Microsoft's COMPRESS.EXE). SETUP.EXE will decompress these others automatically.

There are many ways in which all these steps can be accomplished. For those who are not averse to getting stuck in, everything can be done manually, using the RESERVED WORDS, and a text editor. However, many of these functions can be automated by running AUTOCALC, and by using the AutoCalc Project Manager to create a project file.

When a new project is created in the Project Manager, the main ChiefPro files will be automatically added to the project, so that they will be copied to your DISK #1 automatically. Please do not amend any of the settings in respect of these files.

By using the Project Manager, you can drag and drop files to be added to your project. Then you can manipulate the project file with the Project Manager. The Project Manager can create a template INF file for you, and then you can (and should) later fine-tune this INF file manually, as the LAST step in creating your installation.

Most things can be done by using ChiefPro RESERVED WORDS. However, for more low level access, you might need to use a ChiefPro batch file, with the very rich batch language. When using batch files, everything has to be done manually, and the batch file must be executed by using the $BATCH-FILE reserved word in your INF file.

NOTE: for a list of the Frequently Asked Questions and the answers thereto, please see the CHIEF.FAQ file.

See also;

INTRODUCTION

THE INF FILE

RESERVED WORDS

BATCH FILES

$BATCH-FILE

WINSTALL.DIR


WINSTALL.DIR

In an effort to reduce the file clutter in the root directory of the first installation disk ($DISK1) all the ChiefPro files, except SETUP.EXE, can now be put in a subdirectory of the first disk. This subdirectory must be called WINSTALL.DIR. SETUP.EXE should still be in the root directory of the disk. When the user runs SETUP.EXE, setup will try to locate a subdirectory called WINSTALL.DIR under the root of the directory that SETUP.EXE is being run from (e.g., A:\WINSTALL.DIR). If this directory is located SETUP.EXE will then start to operate from there.

This feature is optional.


$SOURCE-DRIVE

This points to the drive from which the  installation took place (i.e., the root directory of the directory returned by $SOURCEDIR). This reserved word returns only a drive letter plus a colon (e.g., A:). If the source directory is a UNC path name, then this reserved word returns the root directory of that path (e.g., \\CHIEF_SERVER1\DRIVE_C). In either case, there is no trailing back-slash.

You cannot assign any value to this reserved word. You can only use it within other commands/expressions.

EXAMPLES:

 $INI=$DEST\PROG.INI;History;SourceDrive;$SOURCE-DRIVE

 $INI=$DEST\PROG.INI;History;SourceDrive_Root;$SOURCE-DRIVE\

See also;

$SOURCEDIR


$ABORT-MESSAGE

This is the message that will appear to the user when the user does something to terminate the installation (e.g., clicking on the desktop "Abort" button) after the installation has commenced.

The Syntax is;

 $ABORT-MESSAGE=<message>

EXAMPLE:

 $ABORT-MESSAGE=Do you really want to stop?

See also;

$NO-ABORT-BUTTON


$ABORT-UNINSTAL-QUESTION

This is the question that the user will be asked, if while running the uninstaller, the user clicks on the 'Close' option in the system menu of the uninstall dialog.

The Syntax is;

 $ABORT-UNINSTAL-QUESTION=<question>

EXAMPLE:

 $ABORT-UNINSTAL-QUESTION=Sure you want to stop the uninstall?


$AUTOEXEC.BAT

The purpose of this (obsolecent in view of Windows 95) is to make entries into the user's AUTOEXEC.BAT file. The installer willl search for the AUTOEXEC.BAT file, first, in the root directory of drive C:, and then in the directories in the "PATH". If it is not found in any of these places, then nothing will happen. There is NO LIMIT to the number of $AUTOEXEC.BAT lines that you can have in your WINSTALL.INF file. You can use the $DEST reserved word here.

The Syntax is;

 $AUTOEXEC.BAT=<entry>

EXAMPLES:

 $AUTOEXEC.BAT=SET PATH=%PATH%;$DEST\BIN

 $AUTOEXEC.BAT=SET TROOK=C:\TROOK\TROG


$BATCH-FILE

This allows you to specify a Chief's Installer Pro batch file which the installer will execute during the course of the installation. Only one file name is allowed on each $BATCH-FILE line. In WINSTALL.INF, you can have an unlimited number of $BATCH-FILE lines. However, in SETUPINF.INF, you can only have one $BATCH-FILE line.

The Syntax is;

 $BATCH-FILE=<filename>

EXAMPLE:

 $BATCH-FILE=$SOURCEDIR\FIRST.CHF

 $BATCH-FILE=$DEST\SECOND.TXT

See also;

BATCH COMMANDS

BATCH FILES

$MID-BATCH-FILE


$BIG-METER-COLOR

This changes the colour of the big percent meter. It takes the same syntax as $TEXT-BACKGROUND

The Syntax is;

 $BIG-METER-COLOR=<value>

EXAMPLES:

 $BIG-METER-COLOR=Purple

 $BIG-METER-COLOR=$00808080

See also;

$TEXT-BACKGROUND


$BUILD-FILE

This reserved word is used to rebuild large files that have been split up by using SPLIT.EXE (or from within the Chief Pro IDE). For this to work, all the necessary support files must be present - i.e., all the parts must have been installed to the user's disk (all in the same directory), and the log file that was produced when the file was split up must also have been installed into the same directory as the parts of the file. If any part is missing from the directory, or the log file is missing, then this function will fail.

This command can take up to 3 parameters. The first two are necessary, but the third is optional. The first parameter is the FULL PATH name of the LOG file. The second is the directory in which the file should be placed when it has been rebuilt (this can be the same directory with the one in which the small parts are located). The 3rd (optional) parameter simply says CLEANUP. If used, Chief Pro will delete the small parts and the LOG file, if the rebuild operation was successful.

NOTE: you need to add the size of the full file to your $SPACE values - this is both for the purpose of verifying that there is suffient space for both the small parts and the rebuilt whole file, and for the accuracy of the "percent" meter.

The Syntax is;

 $BUILD-FILE=<log file name>;<target directory>;[CLEANUP]

EXAMPLE:

 $BUILD-FILE=$DEST\TEMP\CHIEFPRO.~#0;$DEST\BIN;CLEANUP

 $BUILD-FILE=$DEST\BIGFILE.~#0;$DEST

See also;

HUGE FILES

$BUILD-FILE-EX


$CANCEL-BUTTON-TITLE

This can be used to change the caption of the "Cancel" buttons on the text entry dialog boxes. This is obsolescent will often be overridden by the new string resource #543.

The Syntax is;

 $CANCEL-BUTTON-TITLE=<caption>

EXAMPLE:

 $CANCEL-BUTTON-TITLE=&Forget it

See also;

$OK-BUTTON-TITLE


$CLOSE-GROUP-BOX

Group boxes (with internal numeric IDs of 1 to 9)  exist around different controls in the main dialog window. This reserved word allows you to close any or all of these group boxes, by supplying their numeric IDs as parameters (separated by semi-colons);

The Syntax is;

 $CLOSE-GROUP-BOX=<id number[s]>

EXAMPLE:

 $CLOSE-GROUP-BOX=1;5;6


$DATA-SPACE

This is the space requirement for any non-optional data that your app might need to create at installation time. It will not form part of the calculations for the percent meter - but it will be added internally to the required free space when the installer is checking whether there is sufficient space on the target drive.

The Syntax is;

 $DATA-SPACE=<value>

EXAMPLE:

 $DATA-SPACE=2048000

See also;

$SPACE


$DISKDIR#

A source directory path can (optionally) be specified for the files on each disk (one path only for each disk). This is specified by using the $DISKDIR reserved word. If no source directory is specified, it is presumed that the disk's files are to be installed from the general source directory.

The Syntax is;

 $DISKDIR#=<dir name>;[CODE]

In this scenario, "#" stands for the number of the disk. "CODE" is optional. When used, it specifies whether (for disk 2 to the end) the installer should prompt the user to insert a disk. It defaults to NOT prompting (to simplify installing from cd-rom or network drives). If you want the user to be prompted for a particular disk, put ASK, or PROMPT, or just 1 as the code. Note that "CODE" is not valid for disk 1.

 NOTES:

1. If the specified directory is NOT found, the installer will prompt the user for a disk.

2. The installer will still automatically look for $DISK# directories under the specified directory

3. This feature is optional, and is not needed at all. It should be used sparingly, since it has not been tested in all possible scenarios. It is NOT advised to use this feature when installing from FLOPPY disks (i.e., it is added mainly for the convenience of those who wish to install from cd-rom, or hard disk). Using it in respect of floppy disks will NOT be supported by me.

EXAMPLES:

 $DISKDIR1=F:\USER\LOCAL\INSTALL

 $DISKDIR2=Z:\;ASK

See also;

$DISK


$FORCE-EXIT-WINDOWS

This takes no parameter. If it is used, then Windows will be closed down at the end of the installation, without giving the user any say in the matter. Note that this feature uses the EXITWINDOWS() API call. Thus it will fail if any program refuses to terminate (e.g., if the user has a DOS session open).  Note also that if you use this command, it is advisable to inform your user of what will happen, with the $FINAL-MESSAGE command.

See also;

$FINAL-MESSAGE

$FORCE-RESTART-WINDOWS


$FORCE-RESTART-WINDOWS

This takes no parameter. If it is used, then Windows will be closed down and restarted at the end of the installation, without giving the user any say in the matter. Note that this feature uses the EXITWINDOWSEXEC() API call. Thus it will fail if any program refuses to terminate (e.g., if the user has a DOS session open). Note also that if you use this command, it is advisable to inform your user of what will happen, with the $FINAL-MESSAGE command.

See also;

$FINAL-MESSAGE

$FORCE-EXIT-WINDOWS


$FORCE-OVERWRITE-ALL-EXISTING-FILES

This is an optional command, which takes no parameter. When it is used, the installer will automatically overwrite every file that already exists in the target directory with any file by the same name (from your installation disks), without warning (except that identical files are merely skipped). This only applies to files belonging to your application which already exist, but which have other copies on your installation disks. What this command does is simply that when a file is being installed, if another copy of it is found in the destination directory, that copy is overwritten automatically, unless it is exactly the same in all respects as the copy on the installation disks (in which case, it is skipped).

This command was introduced by request and should be used with extreme caution. In fact, I do not recommend its use at all. If you use it, you are entirely on your own. You have been warned!. It is preferable to use a combination of the commands referred to below.

See also;

$AUTO-REPLACE

$FORCE-OVERWRITE-OLDER-FILES

$SKIP-IDENTICAL-FILES

$SKIP-OLDER-FILE


$ICO

This is an alternative to the $ICON command. This one gives you more control over the icon creation process, and also has the advantage that there is no limit to the number of icons you can create with it ($ICON has a limit of 128 entries), but this way of creating icons is a more low level approach. Note that icon placement in existing groups is sometimes misaligned when using the $ICO command.

The $ICO command take a number of parameters (up to 11, each separated with a semi-colon, or a comma) to control the details of the icons being created.

If you need to use a literal semi-colon in your $ICO lines, then put two hashes (i.e., "##") in each place where you want a literal semi-colon to be inserted. The installer will change the two hashes to one semi-colon at run time.

The Syntax is;

 $ICO=<parameters>

Parameters

1 = the group name (or $GROUP for the default)

2 = allow duplicate icons? (0 for NO; 1 for YES; 2 for REPLACE old icon)

3 = command line

4 = icon's title

5 = file to load the icon from  (optional)

6 = icon index in the icon file (optional)

7 = x position of the icon in group (optional)

8 = y position of the icon in group (optional)

9 = working directory (optional)

10= hotkey (optional)

11= minimize (0 for NO; 1 for YES) (optional; defaults to NO)

Any parameter marked as optional does not have to be supplied. Just supply a comma or a semi-colon instead. "Hotkey" consists of a number, made up of a code for a system key (CTRL, ALT, or SHIFT) plus the ascii code of the letter to be used with it.

Hotkey Codes:

Alt   = 1024

Ctrl  =  512

Shift =  256

So, if for example you want to use Alt+S as the hotkey, then: 1024+83 (i.e., 1107) would be the number.

EXAMPLES:

 $ICO=$GROUP;0;$DEST\TROOK.HLP;Trook Help;$DEST.ICO;0;;;$DEST;1107;1

 $ICO=$GROUP;0;$DEST\TROOKCFG.HLP;Trook CFG Help

 $ICO=Trook Trog;2;$DEST\TROOKTRG.EXE;The Great Trook;;;;;;1108;

See also;

$DELETE-ICON

$ICON


$DELETE-ICON

This can be used to delete an existing icon by its title. You can have an unlimited number of $DELETE-ICON lines but each line can only contain a single icon to be deleted. If the specified icon does not exist in the specified group, nothing happens. The search for the specified icon title is not case-sensitive.

The Syntax is;

 $DELETE-ICON=<group name>;<icon title>

EXAMPLES:

 $DELETE-ICON=$GROUP;Chief's Installer Pro

 $DELETE-ICON=UTILS;Chief's AutoCalc IDE

See also;

$ICO

$ICON


$LAN-SYSDIR

This was introduced by request. Normally, if the Windows SYSTEM directory is not a subdirectory of the Windows directory, this is an indication of a networked Windows environment, and the shared files that are to go to the Windows SYSTEM directory will in such cases normally be installed to the user's Windows directory (in many networks the SYSTEM directory will be read-only).

If you want all these precautions (which after all are only following Microsoft documentation) to be circumvented and for the shared files to still to the Windows SYSTEM directory on the network server, then use this reserved word.

Note that if you use this command, you are on entirely your own, and I will answer no questions if something goes wrong. If the SYSTEM directory on the network server cannot be written to for some reason, your installation will fail, and that, probably woefully. You have been warned!!!

The Syntax is;

 $LAN-SYSDIR=$SYSDIR

That is the only way in which this reserved word will work.


$LONG-FILENAMES

This command disables support for long filenames when running under Windows 95 or Windows NT. By default, this support is enabled. The command takes only one parameter "DISABLED". If that parameter is not used, then long filename support will be automatic.

If this command is used, it must be used in both WINSTALL.INF and AUTOCALC.INI. Please note this point.

The Syntax is;

 $LONG-FILENAMES=DISABLED


$MAX-DUPLICATES

This command was introduced by request. It allows the installation of the same file into more than one destination directory. The command takes one parameter - the maximum number of times a single file can be duplicated in this way. By default, this value is set at 1. You can increase it to any number up to 30.

Note that increasing this number will mean the installer looping through each $DEST\xx directory the specified number of times, for EACH file being installed. This is guaranteed to slow down the installation considerably, if the specified number is too high. Using it can also lead to multiple copies of files which you do not really want to be duplicated - this is especially so if you use wilcards at all, in your $DEST\xx lines.

Thus, if you are only going to install a few files into more than one directory, it is better to avoid this command altogether, and use the COPY command in a batch file. In fact, it is not recommended to use this $MAX-DUPLICATES command at all. Nothing can be achieved by it that cannot be better achieved by using the COPY command in a batch file.

The Syntax is;

 $MAX-DUPLICATES=<number>

EXAMPLE:

 $MAX-DUPLICATES=4

See also;

$BATCH-FILE

$DEST


$NO-ABORT-BUTTON

This specifies that the "Abort" button (on the desktop) should not be displayed. This command takes no parameter.

See also;

$NO-HELP-BUTTON


$NO-HELP-BUTTON

This specifies that the "Help" button (on the desktop) should not be displayed. This command takes no parameter. Note that if the file WINSTALL.HLP is not found, then "Help" button will not be displayed anyway.

See also;

$NO-ABORT-BUTTON


$OK-BUTTON-TITLE

This can be used to change the caption of the "OK" buttons on the text entry dialog boxes. This is obsolescent will often be overridden by the new string resource #542.

The Syntax is;

 $OK-BUTTON-TITLE=<caption>

EXAMPLE:

 $OK-BUTTON-TITLE=&Go on!

See also;

$CANCEL-BUTTON-TITLE


$OPTIONHELP#

This is to present a brief explanation of the user-options to the user. Each user-option will have a small button next to it, if there is an OPTIONHELP for that option. Clicking on that button will display a message box with your brief explanation.

Each user option may have up to 10 $OPTIONHELP# lines - but an absolute maximum limit of 1024 bytes applies to each user option. Realistically, this maximum should be 512 bytes, because of limits in the MessageBox() API when using CTL3D.

The Syntax is;

 $OPTIONHELP#=<help text>

EXAMPLES:

 $OPTIONHELP1=These files are absolutely necessary for \nthe program to work.

 $OPTIONHELP2=These are optional bitmap and icon files.

See also;

$OPTIONAL

$USER-OPTION


$REGISTER-UNINSTALL

This reserved word is used to "register" your program's uninstall routine (Chief Pro's Uninstaller) with the Win95 registry. When this is done, your program will be displayed among those that can be "automatically uninstalled" by Win95. Basically, the "automatic" stuff is a gimmick. You have to do the uninstal yourself, but this is transparent to your user. All you need to do is to supply the full path of UNINSTAL.EXE to this reserved word, and Chief Pro will make the necessary entries for you in the Win95 registry. But please note that UNINSTAL.EXE must be on your distribution disks, and must be installed in the normal way.

The registry entries will only be made if the user is running Win95 or Windows NT. On Win 3.1x installations, no entry will be made. At the moment this feature is only useful under Win95 - but later versions of NT may use it as well.

The Syntax is;

 $REGISTER-UNINSTALL=<path to UNINSTAL.EXE>

EXAMPLE:

 $REGISTER-UNINSTALL=$DEST\BIN\UNINSTAL.EXE


$SMALL-METER-COLOR

This changes the colour of the small percent meter. It takes the same syntax as $TEXT-BACKGROUND

The Syntax is;

 $SMALL-METER-COLOR=<value>

EXAMPLES:

 $SMALL-METER-COLOR=Green

 $SMALL-METER-COLOR=$00808080

See also;

$TEXT-BACKGROUND


$UNZIP

Chief's Installer Pro features support for unzipping files. The UNZIP support is compatible with PKZIP (tm) 2.x ZIP archives. This command is used to unzip a file during the installation. You can have an unlimited number of $UNZIP lines in your INF file, each of them specifying a single file. For the $UNZIP command to work, the file WINSTALZ.DLL must be present on your DISK #1, and if there is more than one disk in your installation set, your users MUST run SETUP.EXE, and not INSTALL.EXE - otherwise, the unzip will most certainly fail.

The $UNZIP command can also be used in the $DISK lines, to specify that a ZIP archive should be unzipped from a particular installation disk. In this case, the files in the ZIP archive will only go to the directory supplied as a parameter to $UNZIP.

By default, all the files inside the ZIP archive are extracted (i.e., the extraction file specification is "*.*"). However, you can specify the files that will be extracted from the ZIP archive, with the "/F=" parameter. If used, this parameter MUST be the LAST one to be supplied.

Please note that if the ZIP archive contains sub-directories, the directory structure inside the ZIP archive will be created/restored in the target directory. This behaviour cannot be changed.

Please note also that this command cannot handle ZIP archives which are split across more than one disk, or files that are encrypted with a passord. Also, it cannot handle long filenames inside ZIP archives.

The Syntax is;

 $UNZIP=<zipfile>;<target directory>;<CODE>[;/F=<filespecs>]

 or, if used on a $DISK# line;

 $DISK#=$UNZIP;<zipfile>;<target directory>;<CODE>

"Code" specifies how to deal with files which already exist in the target directory. Possible values are;

[a] OVERWRITE-ALL (overwrite all existing files without warning)

[b] OVERWRITE-OLDER (overwrite only older files [by date-stamp])

[c] SKIP (skip existing files)

[d] CONFIRM (ask for confirmation before overwriting existing files)

EXAMPLES:

 $UNZIP=$SOURCEDIR\BIN.ZIP;$DEST\BIN;SKIP

 $UNZIP=$TEMPDIR\TROOK.001;$DEST\TROOK;OVERWRITE-OLDER

 $DISK3=$UNZIP;$TEMPDIR\TROOKCFG.002;$DEST\TROOKCFG;CONFIRM

 $UNZIP=$SOURCEDIR\BIN\BIN.ZIP;$DEST\BIN;CONFIRM;/F=*.EXE

See also;

$DISK


$WIN32-ONLY

This reserved word can be used if you want to ensure that your program is only installed in a Win32 environment. If this reserved word is used (either in WINSTALL.INF or SETUPINF.INF) then the installer will refuse to run if the user is running a 16-bit version of Windows. In this case an error message (which can be specified in $WIN32-FAIL-MESSAGE will be presented to the user). "Win32" in this case refers only to Windows 95 and Windows NT. Win32s is regarded as 16-bit.

This command takes only one parameter - either 1 (one) to turn it on, or 0 (zero) to turn it off. By default, it is disabled internally, and so its value will always be 0 unless you turn it on manually.

The Syntax is;

 $WIN32-ONLY=<value>

EXAMPLES:

 $WIN32-ONLY=1

 $WIN32-ONLY=0

See also;

$WIN32-FAIL-MESSAGE


$WIN32-FAIL-MESSAGE

This is the message that will appear, if $WIN32-ONLY is enabled, and the user tries to install your program while running a 16-bit version of Windows.

The Syntax is;

 $WIN32-FAIL-MESSAGE=<message>

EXAMPLE:

 $WIN32-FAIL-MESSAGE=This program requires Win95 or Windows NT

See also;

$WIN32-ONLY


$HIDE-OTHERS-PROGRESS

The purpose of this reserved word is to prevent the display (in the progress dialog) of the entries being made into INI files and the system registry. By default, the entries will be shown in the dialog box, but if this command is used, then the dialog box will just display a "please wait" message.

This command takes no parameter.


$UPGRADE-VERSION

This is to indicate (if it is set to 1 or TRUE) that the current installation  is an upgrade version. In this case, the installer will not abort if the available hard disk space is not as much as that on the $SPACE line. The command takes one parameter (either 1 or TRUE).

This command was implemented by request. Use with caution!

The Syntax is;

 $UPGRADE-VERSION=<value>

EXAMPLE:

 $UPGRADE-VERSION=1

See also;

$SPACE


$EXEC-UNINSTALL

This allows you to specify a program which the uninstaller will execute, before starting uninstalling the files. The command takes the same syntax as EXECWAIT-WINDOW

See also;

EXECWAIT-WINDOW


$BUILD-FILE-EX

This command, like $BUILD-FILE rebuilds a huge file which had previously been split into smaller parts. The main difference between this command and $BUILD-FILE is that this command rebuilds the split file from the installation floppies (i.e., without having first to copy the small parts to the hard disk).

If any of the parts of a split file is not found on the disk on which it is expected, a message dialog will come up, prompting the user to insert the disk containing that file. ChiefPro will then try to read the file again. This will continue until the file is found, or the user clicks "Cancel".

This command takes 3 parameters. The first parameter is the FULL PATH name of the LOG file. The second is the directory in which the file should be placed when it has been rebuilt. The message that will be presented to the user (to prompt for disk changes) should be specified as the THIRD parameter.

In this message, you can use the following codes, in place of which ChiefPro will substitute the item referred to in respect of the code;

[a] \n  = a new line

[b] %s  = the name of the file that is being sought for

[c] %i  = the part number of the file that is being sought for

The Syntax is;

 $BUILD-FILE-EX=<log file name>;<target directory>;<message>

EXAMPLE:

 $BUILD-FILE-EX=$SOURCEDIR\BIGFILE.~#0;$DEST;Please Insert the disk labelled PART #%i (containing: %s)\n and Click OK to continue (or Cancel to Quit).

See also;

$BUILD-FILE


$COPYRIGHT-MESSAGE

This reserved word allows you to specify a text file containing a copyright message (maximum 16kb), which the user will be asked to agree to (by clicking on a button labelled "I Agree" or or other words to a similar effect). The message will be presented to the user in a dialog box. If the user does not agree (by clicking on a button labelled "I don't Agree" or other words to a similar effect), the installation will terminate.

The default filename for the copyright message is WINSTALL.CPR. ChiefPro will look for this file automatically. If you create one, it should be on the same disk as SETUP.EXE.

The Syntax is;

 $COPYRIGHT-MESSAGE=<filename>;<AgreeButtonTitle>;<DisageeButtonTitle>;<DialogTitle>

EXAMPLE:

 $COPYRIGHT-MESSAGE=$SOURCEDIR\COPYRHT.TXT;I &agree;&No, never!;My Great Copyright Message

See also;

$WELCOME-MESSAGE


$DEBUG-LOG

This reserved word provides limited support for debug information (while testing your installation). The command takes no parameter, but in order to take effect, it MUST be the FIRST line in the WINSTALL.INF file.

When this feature is used, ChiefPro will create an ascii file called CHIEFBUG.LOG, in your TEMP directory. This file will contain the details of all the failed operations which the installer encounters. If the file exists already, it is appended to. If it does not exist, a new one is created.

This command is to be used for testing purposes only - do not use it in the WINSTALL.INF file that you ship with your application. In order to ensure that it is not left inadvertently, a dialog box will appear at the end of the installation if this command is active.


$MID-BATCH-FILE

This command does exactly the same thing as $BATCH-FILE. However, while $BATCH-FILE statements are executed at the end of the installation, the $MID-BATCH-FILE lines are executed immediately after the user clicks on the "Start Install" button. Batch files can be used at this point to do some preliminary stuff (e.g., searching for installed components, or backing up the user's data files, etc.) before the main installation starts.

Note that anything done in a batch file called with this command is not logged in UNINSTAL.LOG - and so it will not be undone by the uninstaller.

The Syntax is;

 $MID-BATCH-FILE=<Batch File>

EXAMPLE:

 $MID-BATCH-FILE=$SOURCEDIR\BACKUP.CHF

See also;

$BATCH-FILE


$SKIP-NEWER-FILES

This command causes the installer to skip an existing file which is a newer (more recent version) than the version on the installation disks. This command takes no parameter.

See also;

$AUTO-REPLACE

$FORCE-OVERWRITE-OLDER-FILES

$SKIP-IDENTICAL-FILES

$SKIP-OLDER-FILE


$SPLASH-MESSAGE

This command allows you to customise the dialog which displays the "splash" messages during the course of the installation. By default, the dialog is centered, at the bottom of the screen, and it takes its messages from a text file called WINSTALL.MSG. This command allows you to change the name of the text file and to specify different coordinates for the message dialog.

There can be up to 10 messages in the text file, and the text file must be formatted in a particular manner. Each message must be numbered, within square brackets, and a hash ("#") before the number. Thus, for example, the first message will be identified by: [#1], the second will be identified by: [#2], etc. The text for each message will be the text beginning from the line after the message number is specified, up till the text on the line preceding the next message number. Please see the sample WINSTALL.MSG for an example of how it should be formatted.

The command takes 6 parameters. First, the full pathname of the text file containing the messages; secondly, an integer specifying the left side ("x" coordinate) of the dialog; thirdly, an integer specifying the top ("y" coordinate) of the dialog; fourthly, an integer specifying the width of the dialog; fifthly, an integer specifying the height of the dialog; and, sixthly, an integer specifying the maximum number of lines for each message (this should not exceed 15).

The Syntax is;

 $SPLASH-MESSAGE=<filename>;left;top;width;height;max-lines-for-each-message

EXAMPLE:

 $SPLASH-MESSAGE=$TEMPDIR\MESSAGE.TXT;1;350;450;200;15


$TEST-RUN

This command provides support for test runs of the installation (i.e., files on $DISK lines will not be installed but the installer will go through the motions of installing them, and will also process other commands, including batch files). This command takes no parameter.

This command is for testing purposes only. Please do NOT use this in the WINSTALL.INF file that you ship with your application


$UNPAK

This reserved word is used to unpack a ChiefPro packed archive. It takes three parameters. The first is the name of the packed archive to unpack. The second, is the target directory, and the third is a code to indicate what should happen if the file being extracted from the archive already exists in the target directory. The valid codes here are the same as those in the $UNZIP command - please see that command for details.

Note that this reserved word can only be used on a $DISK line.

The Syntax is;

 $DISK#=$UNPAK;<packed archive>;<target directory>;[code]

EXAMPLE:

 $DISK1=$UNPAK;$SOURCEDIR\PROG1.BIN;$DEST\BIN;SKIP

See also;

UNPAK

$UNZIP


$USE-WIZARDS

This command decides whether the installer should use the "WIZARD" interface (one dialog presented for each user option), or the "single dialog" interface (all the user options are presented on a single dialog box). In either case, the message that the user will get in respect of each user option will be that specified in the option's $OPTIONHELP line(s).

To use the "Wizard" interface, supply a parameter of "1" (one) to this command. Any other parameter will result in the installer using the single dialog interface.

The Syntax is;

 $USE-WIZARDS=<code>

EXAMPLES:

 $USE-WIZARDS=1

 $USE-WIZARDS=0

See also;

$OPTIONHELP


$USER-DLL

ChiefPro features support for custom (user) Dynamic Link Libraries (DLLs). By default, ChiefPro will search for a 16-bit DLL called WINSTALU.DLL, and, if it is found, will query it for predefined functions, and attempt to execute them.

This reserved word allows you to specify a DLL with another name, and to indicate whether it is 16-bit or 32-bit. It takes 2 parameters - first, the full path name of the relevant DLL, and, secondly, a number - either 16, or 32, to specify whether it is a 16-bit or a 32-bit DLL.

The user DLL can export up to 3 specific functions, which are called automatically if the DLL is loaded successfully;

1. UserInitProc()  - called before any window/dialog appears

2. UserMidProc()   - called immediately after clicking "Start Install", but before the installation of the files begins

3. UserEndProc()   - called just before the installer terminates

NOTES:

[a] each function takes a single parameter - a null terminated string - a pChar in Pascal/Delphi, or LPCSTR in C/C++ (used by the installer to pass some information to your functions - ChiefPro uses a 4kb buffer for this null terminated string)

[b] each function returns a long integer

[c] the return value is ignored by the installer

[d] the installer automatically passes some (pipe delimited) information to the DLL via the null terminated string parameter - you can use this   information, or you may just ignore it. The functions (if found)   receive the equivalents of the following;

[i] UserInitProc() - receives: $SOURCEDIR|$SOURCEDRIVE|$TEMPDIR

[ii] UserMidProc() - receives: $SOURCEDIR|$SOURCEDRIVE|$TEMPDIR|$DEST

[iii] UserInitProc() - receives: $SOURCEDIR|$SOURCEDRIVE|$TEMPDIR|$DEST

If your user DLL is not called WINSTALU.DLL, then you need to manually make sure that the installer can find it at all times. The best way to do this is to specify it in the $TEMPDIR line in your SETUPINF.INF file, so that SETUP.EXE will copy it to the TEMP directory along with the other ChiefPro support files.

The Syntax is;

 $USER-DLL=<DLL name>;<16/32>

EXAMPLES:

 $USER-DLL=$TEMPDIR\PROG_16.DLL;16

 $USER-DLL=$TEMPDIR\WINSTALU.DLL;32

See also;

DLLCOMMAND


$WELCOME-MESSAGE

This allows you to specify a text file containing a short welcome message (maximum 18 lines). The message in the text file will be displayed in a dialog box (the first dialog) to be presented to the user. If the user does not wish to continue, he/she can terminate the installation process at this stage.

The default filename for the welcome message is WINSTALL.WEL. ChiefPro will look for this file automatically. If you create one, it should be on the same disk as SETUP.EXE.

The Syntax is;

 $WELCOME-MESSAGE;<filename>;<OkButtonCaption>;<CancelButtonCaption>;<DialogTitle>

EXAMPLE:

 $WELCOME-MESSAGE;$SOURCEDIR\WELCOME.MSG;&Continue >;&Abort;Welcome to my Program

See also;

$COPYRIGHT-MESSAGE


ARCHIVES

ChiefPro provides support for native ChiefPro compressed archives, using LZSS compression (note - this uses LZSS - i.e., LZ77 - compression - not LZW compression - so there are no copyright issues). This means that you can now archive any number of files, without using 3rd party compression products. The native support for archive comes via ChiefPro IDE menu items ("Pack Files", "View Packed Archive", and "Archive BDE Files"). The files can be extracted from the archives via the $UNPAK reserved word, and/or the UNPAK batch command.

The compression ratio on binary files is not quite as good as PKZIP (tm) - but it is typically not far behind. Compression on text files is typically around 70%.

See also;

$UNPAK

UNPAK


BDE INSTALLATION

ChiefPro provides limited support for installation of the Borland Database Engine (BDE), without using the BDE install program. The support is provided by archiving the BDE files from the ChiefPro IDE, and then installing the BDE via ChiefPro batch files. The ChiefPro batch language has been enhanced substantially to cater for something as complex as installing the BDE. Sample batch files (BDE-16.CHF and BDE-32.CHF) are supplied for 16-bit and 32-bit BDE installation respectively.

Please note that ChiefPro only provides you with the tools for BDE installation. There are a number of steps that you need to take to make a success of this.

1. Archive your BDE files (from the ChiefPro IDE). This needs to be done only once.

2. Copy the BDE archive(s) to your installation disk(s) - normally the last disk(s) in the installation set.

3. Prepare your ChiefPro batch file to install the BDE (you can edit the supplied samples). Make sure that you use the SET-BDE-INSTALL command at the beginning of the batch file, and that you use the UNSET-BDE-INSTALL command just before exiting your batch file. The SET-BDE-INSTALL command ensures that the BDE installation is not logged - otherwise the uninstaller will remove it. You only need to prepare your batch file once.

4. Copy your batch file to your installation disk (preferably the 1st BDE disk itself).

5. Point to the batch file in your WINSTALL.INF file, with the $BATCH-FILE command (e.g., $BATCH-FILE=$SOURCEDIR\BDE-16.CHF).

That is all there is to it!

See also;

ARCHIVES

SET-BDE-INSTALL

UNSET-BDE-INSTALL

$UNPAK

UNPAK


$SKIP-OLDER-FILE

This command tells ChiefPro to skip an existing file which is older than the copy on the source disk. In such cases, the specified file(s) will be skipped (without asking the user any question) if older versions of them exist in their target directories.

This command can take single file names, or file specifications, separated by semi-colons. Note that no paths should be included. You can have an unlimited number of $SKIP-OLDER-FILE lines.

The Syntax is;

 $SKIP-OLDER-FILE=<file(s)>

EXAMPLES:

 $SKIP-OLDER-FILE=*.DB;TROOK.CFG

 $SKIP-OLDER-FILE=AUTOCALC.INI;IDAPI.CFG;GLOOG.ANF

See also;

$AUTO-REPLACE

$FORCE-OVERWRITE-OLDER-FILES

$SKIP-IDENTICAL-FILES

$SKIP-NEWER-FILES


$CREATE-FILE

This reserved word creates a new file or overwrites existing one with the same name (without warning!!). The file, when created, will be 0 bytes in size. If the operation is successful, the name of the file is logged for the uninstaller to remove.

The command is useful for those cases where you are writing to a file with commands which can append to an existing file (e.g., with $WRITE-TEXT) and you want to make sure that the file is removed at uninstal time. It is also useful for logging those data files which your application will create after it is installed, so that they will be removed by the uninstaller if your program is uninstalled.

You can have any number of $CREATE-FILE lines, each specifying a single filename. The lines are processed immediately before the $WRITE-TEXT lines are processed.

The Syntax is;

 $CREATE-FILE=<filename>

EXAMPLE:

 $CREATE-FILE=$DEST\DATA\XXDFD.DB

See also;

$WRITE-TEXT


$WRITE-TEXT

This reserved word does the same thing, and takes the same parameters as the WRITETEXT batch command. Please check the documentation on that command for more details.

The Syntax is;

 $WRITE-TEXT=<filename>;<line number>;<string>

EXAMPLE:

 $WRITE-TEXT=$DEST\TTT.TXT;LAST;This is the last line

See also;

WRITETEXT


Batch Files

Chief's Installer Pro provides support for running commands via batch files. For this purpose, Chief's Installer Pro implements a batch language and batch commands which are roughly similar to the DOS commands and batch language, but which are different in some respects.

Batch commands provide a very effective means of extending the functionality of Chief's Installer Pro. Since it is impossible to envisage in advance all the possible scenarios in which the installer will be used, this type of functionality presents the best approach to increasing the programs's flexibility.

The batch features are activated by the $BATCH-FILE reserved word. This specifies the name of a batch file. Each batch file can contain an unlimited number of lines - but note that the bigger a batch file is, the longer it will take to read it. Each line in a batch file can be up to a maximum of 200 characters.

 NOTES:

1. Whatever is done by these batch commands will NOT be undone by the uninstaller.

2. Batch files are executed in the order in which they appear, and are processed immediately after the files have been installed (after $ini, $fonts, $reg-data, and $autoexec.bat, but before $pre-exec, and $exec)

3. Certain reserved words are invalid when used in a batch file that is run from SETUPINF.INF - e.g., $DEST, and $TARGET, since they might be changed by the user after the main install dialog is loaded. The same thing goes for $SOURCEDIR, which might sometimes be changed by the user.

See also;

BATCH COMMANDS

$BATCH-FILE

VARIABLES


BATCH COMMANDS

Chief's Installer Pro batch files support sundry commands. Many of them operate like their DOS, OS/2, or Windows NT counterparts, but most are different in various respects. The main point is that if you are familiar with the DOS internal commands, many of these commands will also be familiar to you. Below is a list of batch commands, and a summary of their syntax, and what they do.

#CONST

#DEFINE

#ELSE

#INCLUDE

#VAR

APPENDFILE

ASSIGN

ATTRIB

BEEP

CD

CHGSTR

CONCAT

COPY

CREATEFILE

DEL

DELAY

DISPLAY

DLLCOMMAND

EXEC

EXECHIDDEN

EXECWAIT

EXECWAIT-WINDOW

EXIT

EXITWINDOWS

EXITWINDOWSEXEC

EXPANDFILE

FOR

GOTO

HALT

HOURGLASS

IF ACTIVEDLL

IF ASSIGNED

IF BITSPIXEL

IF CHOICE

IF CONFIRM

IF CPU

IF DISKFREE

IF DISKLABEL

IF EQUAL

IF ERRORCODE

IF ENV-VAR

IF EXIST

IF FILEDATE

IF FSIZE

IF GETDIR

IF GETFILE

IF GETINI

IF HAS-FPU

IF INPUT

IF ISDIRECTORY

IF NOT-ASSIGNED

IF NOT-CONFIRM

IF NOT-EQUAL

IF NOT-ERRORCODE

IF NOT-EXIST

IF NOT-FILEDATE

IF NOT-FSIZE

IF NOT-ISDIRECTORY

IF REGENTRY

IF SLANGUAGE

IF VMODE

IF WINVER

LOADCTL3D

MAKEICON

MD

NOHOURGLASS

PLAY-AVI

PLAYSOUND

POSTMESSAGE

PREPEND

RD

REN

SAY

SET-BDE-INSTALL

SHOW-TEXTFILE

UNLOADCTL3D

UNPAK

UNSET-BDE-INSTALL

UNZIP

WRITEBAT

WRITEINF

WRITEINI

WRITEREG

WRITETEXT

See also;

BATCH FILES


#CONST
#CONST or $CONST

This command is used to define some  GLOBAL constants in a Chief's Installer Pro batch file. The defined constants then apply throughout the batch file. Wherever Chief's Installer Pro encounters the defined constant in the batch file, it is replaced by the value which you assigned to it. Such constants should be defined at the beginning of the batch files. You can have an unlimited number of #CONST lines.

This command is similar to the #DEFINE command, but is different in a very important respect - with #DEFINE, parts of any word that matches will be replaced - however, with #CONST, only whole words will be replaced.

The changes are done in memory - so the physical contents of the batch file are unaltered.

Restrictions and features;

1. #CONST can only be used ONCE for any particular constant in a batch file.

2. Each #CONST entry must be on a line by itself.

3. You cannot use one #CONST constant in the definition of another one.

4. If you use the constant's name (or any part of its name) as part of its value, it will be taken as a literal value.

5. A value assigned to a constant with $DEFINE can be used in defining the value of a $CONST constant. This is one important advantage over using $DEFINE.

The syntax is:

#CONST <constant> = <value>

Examples;

#CONST OLDDIR=$WINDIR\PROG\OLD

#CONST MYCOMMAND=$DEST\BIN\MYPROG.EXE

See also;

#DEFINE


#DEFINE
#DEFINE or $DEFINE

This command is used to define some GLOBAL constants in a Chief's Installer Pro batch file. The defined constants then apply throughout the batch file. Wherever Chief's Installer Pro encounters the defined constant in the batch file, it is replaced by the value which you assigned to it. Such constants should be defined at the beginning of the batch files. You can have an unlimited number of #DEFINE lines.

The changes are done in memory - so the physical contents of the batch file are unaltered.

Restrictions;

1. $DEFINE can only be used ONCE for any particular constant in a batch file.

2. Each #DEFINE must be on a line by itself.

3. You cannot use one defined constant in the definition of another one.

4. You CANNOT use the constant's name (or any part of its name) as part of its value. However, you can use the (already defined) constant's name in a constant that you are defining with the #CONST command.

5. Each constant defined in this way MUST be entirely unique. This is because partial matches will be changed as well. Thus, for example, you cannot have one constant called DIR and another one called DIREC, if you are going to use #DEFINE with DIR. This is because when occurences of DIR are being changed, the places where those letters occur in DIREC (i.e., the first 3 letters of DIREC) will be changed as well - and this is probably not what you want. Also, defining a constant as COMMAND and another one as COMMAND2 or MYCOMMAND is not advisable, because they have the string "COMMAND" common to them all. Please note this point.

GOOD TIP: If you must use similar names, the best thing to do is to interpose another character after the FIRST character of the common parts. For example, you could have a constant called COMMAND, and others called C1OMMAND, C2OMMAND, C3OMMAND, etc.

ANOTHER TIP: Most of these restrictions do not exist when you use the #CONST command. That command is identical to this one, except that it only changes whole words.

The syntax is:

#DEFINE <constant> = <value>

Examples;

#DEFINE OLDDIR=$DEST\BIN\OLD

#DEFINE COMMAND=C:\4DOS\4DOS.EXE

The following examples are NOT allowed;

#DEFINE COPY=COPY *.* A:\

#DEFINE COMMAND=COMMAND.COM

#DEFINE COMM=C:\DOS\COMMAND.COM

This is because they represent an attempt to use the constants which are being defined (or part of the constants' names) in the values assigned to the constants. This will either lead to an almighty CRASH, or to unpredictable and random results.

See also;

#CONST


#ELSE
#ELSE or $ELSE

This command is to be used with the "IF" commands, to specify an alternative course of action if the "IF" condition is not true. It allows you to do something like the typical "IF THEN ELSE" construct, in a ChiefPro batch file.

EXAMPLES:

 IF EXIST;$WINDIR\PROG.INI;GOTO END;#ELSE;GOTO WRITE-MY-INI

 IF ISDIRECTORY C:\TMP CHDIR C:\TMP #ELSE MKDIR C:\TMP


#INCLUDE
#INCLUDE or $INCLUDE

This allows you to import the contents of another Chief's Installer Pro batch file into the currently running batch file, at the place where the command was used. This is the only way in which you can call a Chief's Installer Pro batch file from another one.

Note that while nested includes may sometimes work, they are NOT supported (i.e., please do not #INCLUDE a file into another one which was itself called with the #INCLUDE command).

The Syntax is;

 #INCLUDE <filename>

EXAMPLE:

 #INCLUDE $TEMPDIR\PROG2.CHF


APPENDFILE

This is one of the text file commands. It adds a string to text to the end of a text (ASCII) file. If the specified file does not exist, a new one is created.

The Syntax is;

 APPENDFILE <filename>;<string>

EXAMPLE:

 APPENDFILE C:\AUTOEXEC.BAT;SET TROOKTROG=C:\TROOKT

See also;

WRITETEXT


ATTRIB

Change and/or set the attributes bits of a file. Attribute bits can be concatenated (separated with a semi-colon). The plus sign ("+") turns on an attribute bit, and the minus sign ("-") turns it off. In this respect, "R" = read only; "S" = system file; "A" = archive; "H" = hidden.

The Syntax is;

 ATTRIB <filename>;<attr>[;other attrs]

EXAMPLE:

 ATTRIB $DEST\TROOK.CNF;+R;-H;-A;+S


BEEP

Make a beeping noise on the PC's speaker. This calls the Windows MessageBeep() API function.


CD
CD or CHDIR

Change to another directory.

The Syntax is;

 CD <new directory>

EXAMPLE:

 CD $DEST\BIN\SOURCE

See also;

MD

RD


CHGSTR

This command is used to change the value of a string (or "variable"), in the current batch file. The change is GLOBAL in the batch file - i.e., all matches in the entire batch file, (either partial or full) will be changed. The command is most useful with the IF INPUT and IF CHOICE commands.

The command takes 2 parameters - separated with an "=" sign. Please note this. The first parameter is the string to be changed, and the second parameter is what it is to be changed to. The search for matches is not case sensitive.

The Syntax is;

 CHGSTR <old value>=<new value>

EXAMPLE:

 IF INPUT "Enter your name:" CHGSTR Cust_Name=INPUT

In the example above, all occurrences of "Cust_Name" in the batch file will be changed to whatever the user entered when prompted for an input. If the user did not enter anything, "Cust_Name" will then remain as a literal value in the batch file, and nothing will be changed.

Please note that the "variable" that you use for "old value" must be entirely unique, because partial matches will be changed as well. So you need to be extra careful when selecting the names. For example, CHGSTR DIR=INPUT is not a good idea if you have lines in the batch file which contain the string "DIR" in their names (e.g., lines containing words such as "CHDIR", or "MKDIR", or "RMDIR", or "DIRECTORY" will then become corrupted). Please NOTE THIS POINT.

NOTE: you can only use CHGSTR to change a particular string ONCE in each batch file - because after that, the string will no longer exist, but will have been replaced by the new value.

Examples of how to use the CHGSTR command with IF INPUT and IF CHOICE can be seen in the sample batch file CHGSTR.CHF.

See also;

ASSIGN

IF CHOICE

IF INPUT


COPY
COPY or CP

Copy a file (or a group of files) from one location to another. This command simply copies the files (compressed files are not expanded).

This command takes two parameters - the source file and the target file/directory. If the source file is a single file name (i.e., no wildcards) then the second parameter can be a file name or a directory. If the source filename contains wildcards, the second parameter MUST be a directory. Error codes are returned in ERRORCODE.

The Syntax is;

 COPY <source-file> [;] <dest-file>

EXAMPLE:

 COPY  $DEST\TROOK.*  $DEST\TROOK\BACKUP

See also;

EXPANDFILE


CREATEFILE

This creates a new file (with zero bytes). If any file of the same name already exists, the existing file is overwritten. Please note this point. The only purpose of using this is to ensure that a log of the file is kept in UNINSTAL.LOG so that the uninstaller can delete it if necessary (i.e., if you are creating a new file on the system with batch commands, you can call CREATEFILE first, and then use any other command (e.g., APPENDFILE, or WRITETEXT).

The Syntax is;

 CREATEFILE <filename>

EXAMPLE:

 CREATEFILE $DEST\TROOK\TROOK.CFG

See also;

APPENDFILE

WRITETEXT


DEL
DEL or RM

Delete a file or a group of files. Note that while wildcards are allowed, the wildcard "*.*" will NOT be accepted. The user will get a hard-coded error message in English.

The Syntax is;

 DEL <filename>

EXAMPLES:

 DEL $TEMPDIR\*.$$$

 DEL $DEST\MYFILE.BAK


DELAY

Pause for some time. This command takes one parameter - the number of SECONDS to wait for. If no parameter is supplied, there will be a pause for one second.

The Syntax is;

 DELAY <seconds>

EXAMPLE:

 DELAY 5


DISPLAY

Shows a modal dialog box in which you can display some text (e.g., while doing some other stuff in the background). This command takes one parameter - either the text to be displayed in the dialog, or OFF (to turn off the display dialog). Note that the display dialog does not have any buttons, and has to be removed by "DISPLAY OFF".

The Syntax is;

 DISPLAY <message>

 or

 DISPLAY OFF

EXAMPLE:

 DISPLAY I am now processing files \n \n Please wait ...


EXEC
EXEC or RUN

Run a program. Processing of the batch file continues as soon as the program is executed.

The Syntax is;

 EXEC <program> [program parameters]

EXAMPLE:

 EXEC NOTEPAD.EXE $DEST\README.TXT

See also;

EXECHIDDEN

EXECWAIT

EXECWAIT-WINDOW


EXECHIDDEN
EXECHIDDEN or RUNHIDDEN

Run a program, with it's main window hidden. Processing of the batch file continues as soon as the program is executed. Note that the program to be executed must be self-terminating, since your user will have no way of terminating it. It will NOT show up in the task list. This command is useful for running something (like a time-stamping program) behind the scenes.

The Syntax is;

 EXECHIDDEN <program> [parameters]

EXAMPLE:

 EXECHIDDEN $DEST\CONFIG.EXE /NewInstall

See also;

EXEC

EXECWAIT

EXECWAIT-WINDOW


EXECWAIT

Run a program. Processing of the batch file will stop until the program is closed. This will fail if used to run DOS sessions under OS/2 (i.e., processing will continue immediately - just like the EXEC command).

This command will fail if used to run and wait for a program which itself is only a shell for another program. A typical example is WRITE.EXE, under Windows 95 (this is just a shell for WORDPAD.EXE). If you are not sure whether the program you want to run will itself just call another program and then terminate, you should use EXECWAIT-WINDOW instead. In fact, it is recommended that EXECWAIT-WINDOW should always be used in preference to this command - especially under Windows 95 and Windows NT.

The Syntax is;

 EXECWAIT <program> [parameters]

EXAMPLE:

 EXECWAIT NOTEPAD.EXE $TEMPDIR\README.NOW

See also;

EXEC

EXECHIDDEN

EXECWAIT-WINDOW


EXECWAIT-WINDOW

This command is used to run a program and wait until a window (specified by its title) no longer exists. This is the best way of running and waiting for Win32 programs, for things like running the DBE Install program, and for running programs which themselves also run other programs to do their processing. An example of this is WRITE.EXE under Win95 - this is only a little program that calls WORDPAD.EXE. You cannot use EXECWAIT in this type of case, because the program that you should be waiting for is WORDPAD, and not WRITE. In this type of case, you should use this command (EXECWAIT-WINDOW), instead of EXECWAIT.

This command takes THREE parameters - first, the program (plus any parameters); then the title of the window that you should wait for; and thirdly, a "TIME OUT" value (in seconds) which indicates the number of seconds to wait for the specified window to appear, before timing out. This should typically be set at around 15 or 20 (seconds) because some systems are slow, and it may take some time for the program to load. If the program is to be run from a floppy or CD-ROM drive, then the time out should be higher still (perhaps 30-40 seconds).

The way in which the second parameter (the window title) is specified is material. If only the window title is specified, then the command will fail if a window exactly matching that title does not appear before the time out elapses (e.g., if you supply something like Chief's Installer Pro - then only an exact match will do).

However, you can use a wildcard character (i.e., "*"), as the first character in the title (in which case, any partial match will be okay - i.e, it does not matter how the window's title begins or ends, as long as the string you provide appears somewhere within the title). For example, when you want to run WRITE.EXE under Win95, and you want to supply the title for the WORDPAD main window, you could supply something like *Wordpad - which will be okay, since the string "Wordpad" will always appear somewhere in the window title of WORDPAD.

You can also use the wildcard as the last character in the title (in which case, the beginning is material, but the end is not - i.e., the actual window title must begin with the string you supplied, but may end in any way). For example, with Chief's Installer Pro, you can supply something like Chief's Install* - which would cater for any version of Chief's Installer.

Note that the search for a matching window title is not case-sensitive.

The Syntax is;

 EXECWAIT-WINDOW <program [parameters]>;<window title>;<time out>

EXAMPLES:

 EXECWAIT-WINDOW   WRITE.EXE $DEST\README.WRI; README*; 20

 EXECWAIT-WINDOW   TROOK.EXE /F=TROK; *Trook City; 10

 EXECWAIT-WINDOW   Notepad History.Txt; History - Notepad; 10

See also;

EXECWAIT


EXIT
EXIT or RETURN

Exit from the currently running batch file. The installer goes to the next stage. This command takes no parameter.

See also;

HALT


EXITWINDOWS

This command takes no parameter. If it is used, then Windows will be closed down immediately, without giving the user any say in the matter. Note that this command uses the EXITWINDOWS() API call. Thus it will fail if any program refuses to terminate (e.g., if the user has a DOS session open). This command is obsolescent.

Under Windows 95, this command shuts down the system. Under Windows NT, it logs out the user.

See also;

EXITWINDOWSEXEC


EXITWINDOWSEXEC

Shut down Windows, run a DOS program, and then restart Windows again. This command takes one parameter - the name of the DOS program to be executed. It is NOT recommended to use this command at all, since if it is used that is really the end of your installation - Windows will restart, and just return the user to whatever happens to be the Windows shell. Thus, this command is obsolescent.

Note that this command uses the EXITWINDOWSEXEC() API call. Thus it will fail if any program refuses to terminate (e.g., if the user has a DOS session open).

Under Windows NT, this command logs out the user, who then will be able to log in again, after which the command is executed.

The Syntax is;

 EXITWINDOWSEXEC <program name>

EXAMPLE:

 EXITWINDOWSEXEC $TEMPDIR\REJIG.COM

See also;

EXITWINDOWS


EXPANDFILE
EXPANDFILE or LZEXPAND

Copy a file (or a group of files) from one location to another. If a file is compressed (with Microsoft's COMPRESS.EXE) the file will be expanded (using the functions in LZEXPAND.DLL).

This command takes two parameters - the source file and the target file/directory. If the source file is a single file name (i.e., no wildcards) then the second parameter can be a file name or a directory. If the source filename contains wildcards, the second parameter MUST be a directory. Error codes are returned in ERRORCODE.

The Syntax is;

 EXPANDFILE <source-file> [;] <dest-file>

EXAMPLE:

 EXPANDFILE $DEST\WORK\TROOK.C?? $DEST\TROOK

See also;

COPY


FOR

This is the FOR loop. It runs a specified command for each file in a set of files.

The Syntax is;

 FOR %variable IN (set) DO command [command-parameters]

EXAMPLE:

 FOR %i IN ($DEST\*.TXT) DO NOTEPAD.EXE %i


GOTO

Jump to a pre-defined label in the batch file. Labels, when defined, must begin with a colon (":") followed immediately with the label's name. When using GOTO, you must not include the colon. Processing continues after coming to the end of the label, unless the end of the label contains a jump to another label (with GOTO).

The Syntax is;

 GOTO <label>

EXAMPLE:

 GOTO END


HALT

Terminate the installation. This not only exits the batch file currently running, it also closes down the installer itself. Use with care!!!

See also;

EXIT


HOURGLASS

This command changes the cursor to the hour glass (this is useful when you want to do some processing, but you do not want the user to think that the program has crashed). The hourglass will disappear if the cursor is moved. Otherwise you can restore the cursor by using the command: NOHOURGLASS

See also;

NOHOURGLASS


IF BITSPIXEL

This returns the number of bits per pixel in respect of the display. Basically, this can be translated into the number of colors supported by the current display driver.

There are several possible return values, each of which indicates a certain number of colors; e.g., 4 = 16 colors; 8 = 256 colors; 16 = 64k colors; 24 = 16.7m colors

The Syntax is;

 IF BITSPIXEL <value> <command>

EXAMPLES:

 IF BITSPIXEL 8 SAY You have a 256 color display!

 IF BITSPIXEL 4 SAY You have a 16 color display. I need at least 256 colors!

 IF BITSPIXEL 24 GOTO TRUE-COLOR


IF CHOICE

This command allows the user to choose any one out of up to 10 predefined options (a radio button will be presented for each option). The options are a series of strings, separated by semi-colons (and numbered automatically), the last of which will be the text prompting for the choices. If any of the buttons is checked, and the user clicks on "OK" the condition returns TRUE. In this case, the number of the selected option will be returned in CHOICE, and the string associated with the selected option will be returned in CHOICESTR (minus any "&" character), and and the command attached to the condition will be executed. See the sample batch file SETUP.CHF for an example of this being used to ask for the user's language, and CHGSTR.CHF for examples of use with the CHGSTR command.

NOTE: if you want to refer to the selected option, you can use either CHOICE (for a numeric value) or CHOICESTR (for a string value) - but you cannot use both CHOICE and CHOICESTR at the same time.

The Syntax is;

 IF CHOICE "<choices;prompt>" <command> [CHOICE|CHOICESTR]

EXAMPLES:

 IF CHOICE "Mono;Colour;Please choose your monitor type" GOTO CHOICE

 IF CHOICE "AMD;Intel;Cyrix;Select your CPU vendor" COPY CHOICE.CPU $DEST

 IF CHOICE "AMD;Intel;Cyrix;Select your CPU vendor" SAY You bought CHOICESTR!


IF CONFIRM

This allows you to prompt the user for a YES or NO. It presents a message box with a question (posed by you) and if the user clicks on YES, then the condition returns TRUE and the attached command is executed. If the user clicks on NO, then the condition returns FALSE and the attached command is ignored.

The Syntax is;

 IF CONFIRM "<question>" <command>

EXAMPLE:

 IF CONFIRM "Should I abort the install?" HALT

See also;

IF NOT-CONFIRM


IF CPU

This allows you to test for the microprocessor (CPU) inside the user's PC, without any input from the user. If the user's CPU is the one specified by you, then the condition returns TRUE. Possible CPU values are 80386, 80486, or P5

The Syntax is;

 IF CPU <cpu-value> <command>

EXAMPLE:

 IF CPU P5 Say you have a Pentium processor!

See also;

IF HAS-FPU


IF DISKFREE

This allows you to test for the amount of free disk space on the current drive. This takes an operator as the first parameter, and the size you are testing for, as the second parameter. For the operator, you can use either the "greater than" (">") or the "less than" ("<") symbols. Whether the condition returns TRUE or not depends on the operator used. The "size" parameter should be a whole number, in bytes.

The Syntax is;

 IF DISKFREE <operator> <size> <command>

EXAMPLES:

 IF DISKFREE > 1024 SAY Free Space is Greater than 1kb!

 IF DISKFREE < 2048000 GOTO ABORT


IF ENV-VAR

This command can be used to check for the existence of an environment variable, and to execute a specified command if the environment variable exists. The environment variable is returned in an internal variable called ENV-VAR, which can be used in the specified command. The name of the environment variable should be put within double quotation marks. If the environment variable does not exist, the command is not executed.

The Syntax is;

 IF ENV-VAR <"variable"> <command [ENV-VAR]>

EXAMPLES:

 IF ENV-VAR "progdir" WRITEINF $TEMPDIR.INF;$TARGET=ENV-VAR

 IF ENV-VAR "path" SAY Your PATH is ENV-VAR

 IF ENV-VAR "comspec" RUN ENV-VAR /C prog.bat


IF ERRORCODE

The result of every batch operation is returned in an internal variable called ERRORCODE. This is so that you can receive some (rudimentary) feedback on each command (since you will not receive any error message if a command fails). You can test for the value of ERRORCODE after every command.

Possible ERRORCODE values;

[a]  0  = operation successful; no error

[b]  1 = syntax error; the command was not executed at all

[c] -1 = some processing error or the other; this is what to watch for!

The Syntax is;

 IF ERRORCODE <code> <command>

EXAMPLE:

 IF ERRORCODE -1 SAY The last command failed!

See also;

IF NOT-ERRORCODE


IF EXIST

Test for whether a file exists. If the file exists, the condition is TRUE and the attached command is executed.

The Syntax is;

 IF EXIST <filename> <command>

EXAMPLE:

 IF EXIST C:\AUTOEXEC.BAT APPENDFILE C:\AUTOEXEC.BAT LOADHIGH $DEST\TROOK.SYS

See also;

IF NOT-EXIST


IF FSIZE

Tests whether the size of a file is exactly the same as the size you specify. If so, the condition returns TRUE. The "size" parameter should be a whole number, in bytes.

The Syntax is;

 IF FSIZE <filename> <size> <command>

EXAMPLE:

 IF FSIZE $DEST\PROG.EXE 23494 GOTO SAFE

See also;

IF NOT-FSIZE


IF GETINI

This command checks whether a specified entry exists in an INI file, and if so, executes the specified command. If the entry exists, its value is returned in GETINI which can be used in the command. If the INI file is not found, or if no value exists for the entry (or the entry does not exist) then the command is not executed. None of the parameters is case-sensitive.

The Syntax is;

 IF GETINI;<ApplicationName>;<KeyName>;<FileName>;<command [GETINI]>

EXAMPLES:

 IF GETINI;USER CONTROLS;BORSHADE;$WINDIR.INI;SAY RESULT=GETINI

 IF GETINI;ChiefPro;HomeDir;$DEST.INI;DEL $DEST.INI


IF HAS-FPU

This does not require any input from the user. If the user's computer has got a Maths Co-processor (a floating point chip), the condition returns TRUE, and the attached command is executed. It returns FALSE if there is no maths co-processor.

The Syntax is;

 IF HAS-FPU <command>

EXAMPLE:

 IF HAS-FPU SAY You have a Maths Chip!

See also;

IF CPU


IF INPUT

This presents an input dialog to the user, where the user can enter some text, in answer to a prompt. If text is entered and the user clicks on "OK" then the condition returns TRUE. The text entered by the user is returned in a variable called INPUT, which you can use on the same line only.

In another permutation, you can also check for the text that was entered, by using the "==" operator.

This command can optionally take a default start string. If supplied, the start string must appear in brackets, IMMEDIATELY after the prompt.

The Syntax is;

 IF INPUT "<prompt>" [(default)] <command> [INPUT]

 or

 IF INPUT "<prompt>" == <string> <command> [INPUT]

EXAMPLES:

 IF INPUT "Please enter your TROOK filename" NOTEPAD.EXE INPUT

 IF INPUT "Your ID., please:" == FRED GOTO CONTINUE

IF INPUT "ChiefPro Directory" (C:\CHIEFPRO) SAY You entered INPUT

IF INPUT "ChiefPro Directory" (C:\CHIEF\PRO)==C:\CHIEFPRO SAY INPUT


IF ISDIRECTORY

Tests for the existence of a directory.

The Syntax is;

 IF ISDIRECTORY <directory-name> <command>

EXAMPLE:

 IF ISDIRECTORY C:\DRAG CD C:\DRAG

See also;

IF NOT-ISDIRECTORY


IF NOT-CONFIRM

This allows you to prompt the user for a YES or NO. It presents a message box with a question (posed by you) and if the user clicks on NO, then the condition returns TRUE and the attached command is executed. If the user clicks on YES, then the condition returns FALSE and the attached command is ignored.

The Syntax is;

 IF NOT-CONFIRM "<question>" <command>

EXAMPLE:

 IF NOT-CONFIRM "Should I abort the install?" GOTO CONTINUE

See also;

IF CONFIRM


IF NOT-ERRORCODE

Allows you to test for the value of ERRORCODE after each batch operation. See the IF ERRORCODE command for full description.

The Syntax is;

 IF NOT-ERRORCODE <code> <command>

EXAMPLE:

 IF NOT-ERRORCODE 0 SAY An error has occured!

See also;

IF ERRORCODE


IF NOT-EXIST

Tests for the existence of a file. It returns TRUE if the specified file does NOT exist.

The Syntax is;

 IF NOT-EXIST <filename> <command>

EXAMPLE:

 IF NOT-EXIST TRAGG.CNF CREATEFILE TRAGG.CNF

See also;

IF EXIST


IF NOT-FSIZE

Tests for the size of a file. If the file's size does not exactly match the specified size, the condition returns TRUE.

The Syntax is;

 IF NOT-FSIZE <filename> <size> <command>

EXAMPLE:

 IF NOT-FSIZE PROG.EXE 53333 SAY This file may have a VIRUS!!!

See also;

IF NOT-FSIZE


IF NOT-ISDIRECTORY

Tests for the existence of a directory. Returns TRUE if the directory does NOT exist.

The Syntax is;

 IF NOT-ISDIRECTORY <directory-name> <command>

EXAMPLE:

 IF NOT-ISDIRECTORY $DEST\BAK MD $DEST\BAK

See also;

IF ISDIRECTORY


IF SLANGUAGE

Tests for the value of the "sLANGUAGE" setting in the "INTL" section of the WIN.INI file. If there is an entry, the condition returns TRUE and the value in that setting is returned in an internal variable called SLANGUAGE which can be used on the same line.

The Syntax is;

 IF SLANGUAGE [== STRING] <command> [SLANGUAGE]

EXAMPLES:

 IF SLANGUAGE GOTO SLANGUAGE

 IF SLANGUAGE == ENG SAY Your Windows speaks English!


IF VMODE

Allows you to test for the user's display driver mode, without any input from the user. Possible values are CGA, EGA, VGA, SVGA, or SSVGA. The first three speak for themselves. "SVGA" stands for 800*600 and "SSVGA" stands for 1024*768, or higher screen resolutions.

The Syntax is;

 IF VMODE <value> <command>

EXAMPLE:

 IF VMODE SVGA SAY Your display is 800 * 600


IF WINVER

Allows you to test for the version of Windows which the user is running. There are a number of ways to test for Windows versions (see the sample batch file CHIEFPRO.CHF for details), but the numeric method (1 to 11 - starting from Windows 3.0 to Windows NT) may be the easiest.

1  = Windows Version 3.00

2  = Windows Version 3.10 (no network)

3  = Windows for Workgroups 3.10 (networked)

4  = Windows Version 3.10 (with Win32s, no network)

5  = Windows for Workgroups 3.10 (with Win32s, networked)

6  = Windows Version 3.11 (no network)

7  = Windows for Workgroups Version 3.11 (networked)

8  = Windows Version 3.11 with Win32s

9  = Windows for Workgroups 3.11 (with Win32s, networked)

10 = Windows 95

11 = Windows NT

The Syntax is;

 IF WINVER <code> <command>

EXAMPLE:

 IF WINVER 10 SAY You are running Windows 95


LOADCTL3D

Loads CTL3DV2.DLL or CTL3D.DLL (in that order of preference), if either of them is found on the system. For each call to this command, there must be a corresponding call to UNLOADCTL3D.

See also;

UNLOADCTL3D


MAKEICON

This uses the same syntax as the "$ICO" reserved word. The command is for those occasions where you may need to create ICONS before calling a program (e.g., MS Setup for Win32s) which will itself reboot Windows. A DDE conversation is initiated and terminated EVERY time this command is executed, and so it should be used VERY sparingly, otherwise you will have performance problems.

NOTE: this command should NOT be used when calling a batch file from SETUP.EXE (via SETUPINF.INF), because certain reserved words (such as $DEST or $GROUP) will not be effective. It should only be used in batch files called from WINSTALL.INF. Please note this point.

The Syntax is;

 MAKEICON <parameters>

EXAMPLE:

MAKEICON $GROUP;0;$DEST\TRK.HLP;Trk Help;$DEST.ICO;0;;;$DEST;1107;1

See also;

$ICO


MD
MD or MKDIR

Creates a directory.

The Syntax is;

 MD <directory name>

EXAMPLE:

 MD $DEST\TRRUTT

See also;

RD

RD


NOHOURGLASS

This command restores the cursor from the hourglass to the normal (arrow) cursor.

See also;

HOURGLASS


RD
RD or RMDIR

Removes a directory.

The Syntax is;

 RD  <directory name>

EXAMPLE:

 RD $DEST\TRRUTT

See also;

CD

MD


REN
REN or MV

Renames a file. This command takes two parameters - the old name of the file, and the new name of the file. Please note that you cannot rename a file across drives - and that it is preferable to supply the full pathnames for the files.

The Syntax is;

 REN <old-name> <new-name>

EXAMPLE:

 REN $DEST\FRED.TAR $DEST\FRED.GZ


SAY
SAY or ECHO

Displays a message in a standard Windows message box.

The Syntax is;

 SAY <message>

EXAMPLE:

 SAY Hello World!


UNLOADCTL3D

Unloads CTL3DV2.DLL or CTL3D.DLL (if it had been loaded with the LOADCTL3D command). Please do not use this command unless you have previously used the LOADCTL3D command. This command takes no parameter.

See also;

LOADCTL3D


UNZIP

UNZIPs a ZIP archive. The parameter are the same as those taken by the $UNZIP reserved word. Please check the documentation on $UNZIP.

The Syntax is;

 UNZIP <zip-file>;<dest directory>;<code>

See also;

$UNZIP

UNPAK

$UNPAK


WRITEBAT

Writes an entry into a Chief's Installer Pro batch file (at run-time) This takes 2 parameters, separated by a semi-colon - the name of the batch file to write into, and the string to write into the batch file. The file will be written to (transparently) in the appropriate format (i.e., compiled or ASCII), so it does not matter whether the file has been compiled or not.

NOTE: that the ChiefPro reserved words which point to directories will be translated into the appropriate directory name before being written into the INF file. Thus, if you want to write a literal reserverd word without translation, you should put an exclamation mark (i.e., "!") immediately after the $ sign of the reserved word (for example, to write a literal "$WINDIR" with this command, you should express it as "$!WINDIR").

The Syntax is;

 WRITEBAT;<batch file>;<string>

EXAMPLE:

 WRITEBAT $DEST\REG.CHF;SAY You are not registered!

See also;

WRITEINF


WRITEINI

Writes an entry into an INI file. This takes the same parameters as the $INI reserved word, except that (unlike $INI) it cannot take a USER-OPTION as a parameter. Please see the documentation on that reserved word.

See also;

$INI


WRITEINF

Writes an entry into a Chief's Installer Pro INF file (at run-time) This takes 2 parameters, separated by a semi-colon - the name of the INF file to write into, and the string to write into the INF file. The file will be written to (transparently) in the appropriate format (i.e., compiled or ASCII), so it does not matter whether the file has been compiled or not.

NOTE: that the ChiefPro reserved words which point to directories will be translated into the appropriate directory name before being written into the INF file. Thus, if you want to write a literal reserverd word without translation, you should put an exclamation mark (i.e., "!") immediately after the $ sign of the reserved word (for example, to write a literal "$WINDIR" with this command, you should express it as "$!WINDIR").

The Syntax is;

 WRITEINF;<INF file>;<string>

EXAMPLES:

 WRITEINF $TEMPDIR\WINSTALL.INF;$CLEANUP=$DEST\*.CHF

 WRITEINF $TEMPDIR\WINSTALL.INF;$!TEMPDIR=*.CHF;*.BTC;

See also;

WRITEBAT


WRITEREG

This command is used to write to the registry. It uses the same syntax as the reserved word $REG-DATA.

See also;

$REG-DATA

IF REGENTRY


WRITETEXT

Writes a string into a text (ASCII) file. This command takes three parameters - the name of the text file to write to; the line number to write to (or "last" to append to the file); and the string to write into the file.

The line number will normally be a positive whole number (i.e., whole numbers greater than zero). However, you can use a negative whole number to specify the number of lines preceding the LAST line in the file (e.g., "-1", to specify that the text should be written to the line immediately preceding the last line in the text file). Please use this feature with GREAT care!

The Syntax is;

 WRITETEXT <filename>;<line number>;<string>

EXAMPLES:

 WRITETEXT $DEST\TTT.TXT;1;This is the first line

 WRITETEXT $DEST\TTT.TXT;LAST;This is the last line

 WRITETEXT $DEST\TTT.TXT;-1;This is the line preceding the last line

See also;

APPENDFILE


VARIABLES

ChiefPro provides support for declaring and using variables in batch files. A variable MUST be declared BEFORE it is used in any way. It is advised that variable declarations be done at the beginning of the batch file (either immediately before or after #CONST and #DEFINE statements. Below is a summary of the support provided for variables.

1. To declare a variable, use the command #VAR or $VAR (i.e., #VAR <variablename>)  e.g., #VAR ChiefDir

2. To assign a value to a variable, use the command ASSIGN

3. To check if a variable has been assigned a value, use either the command IF ASSIGNED or the command IF NOT-ASSIGNED

4. To use a variable's value in an expression, use the declaration @%VariableName%. (e.g., IF ASSIGNED;@ChiefDir;CHDIR @%ChiefDir%).

5.  To check if a value/variable is the same as another value/variable, use the command IF EQUAL or the command IF NOT-EQUAL.

6.   To add a variable/value to a variable value, use the command CONCAT or the command PREPEND

See also;

#VAR

ASSIGN

CONCAT

PREPEND

IF ASSIGNED

IF NOT-ASSIGNED

IF EQUAL

IF NOT-EQUAL


#VAR
#VAR or $VAR

This command is used to declare a variable in a ChiefPro batch file. It takes only one parameter - the name of the variable being declared. It is preferable to declare all variables early in the batch file. Each variable has to be declared on a separate line. All variables must be declared before being used.

Variable names must be unique - but they are not case sensitive. Variables cannot be assigned values at the time they are being declared. You have to use the ASSIGN command to assign a value to a variable.

The Syntax is;

 #VAR <VariableName>

EXAMPLE:

 #VAR Source_Dir

See also;

VARIABLES

ASSIGN

CONCAT

PREPEND

IF ASSIGNED

IF NOT-ASSIGNED

IF EQUAL

IF NOT-EQUAL


ASSIGN

This command is used to assign a value to a variable. The variable must have been declared before any attempt to assign a value to it.

This command takes two parameters - the name of the variable, with the "@" character prepended to it, and the "=" sign appended to it, and the value being assigned to it.

The Syntax is;

 ASSIGN;@VariableName=<Value>

EXAMPLES:

 ASSIGN;@ChiefDir=C:\CHIEFPRO

 ASSIGN;@Cust_Name=Fred Smith

 ASSIGN;@Africa=A Great Continent.

See also;

#VAR

VARIABLES

CONCAT

PREPEND

IF ASSIGNED

IF NOT-ASSIGNED

IF EQUAL

IF NOT-EQUAL


CONCAT

Use this to add a value to the end of a variable. The value can be either a literal value, or another variable. After the operation, the variable holds the concatenated values.

The Syntax is;

 CONCAT;@VariableName;ValueToAdd

EXAMPLES:

 CONCAT;@DestDir;\BIN

 CONCAT;@Source_Dir;@Source_Drive2

See also;

VARIABLES

PREPEND


IF ASSIGNED

This "IF" condition is used to check whether a ChiefPro batch file variable has a value assigned to it. The condition is TRUE if there is a value assigned to the variable. The condition is FALSE if the variable has no value assigned to it (or if the variable does not exist).

The Syntax is;

 IF ASSIGNED;@VariableName;<command>

EXAMPLES:

 IF ASSIGNED;@ChiefDir;GOTO CONTINUE

 IF ASSIGNED;@ChiefDir;CHDIR @%ChiefDir%

See also;

VARIABLES

IF NOT-ASSIGNED


IF NOT-ASSIGNED

This "IF" condition is used to check whether a ChiefPro batch file variable has a value assigned to it. The condition is TRUE if there is no value assigned to the variable (or if the variable does not exist). The condition is FALSE if the variable has a value assigned to it.

The Syntax is;

 IF NOT-ASSIGNED;@VariableName;<command>

EXAMPLES:

 IF NOT-ASSIGNED;@ChiefDir;GOTO TERMINATE

 IF NOT-ASSIGNED;@ChiefDir;ASSIGN;@ChiefDir=C:

See also;

VARIABLES

IF ASSIGNED


IF EQUAL

This "IF" condition is used to check whether a ChiefPro batch file value/variable is the same as another value/variable. The condition is TRUE if the values of the first and second parameters are the same, and FALSE if they are NOT the same. The comparisons are not case sensitive.

The Syntax is;

 IF EQUAL;@%VARIABLE1%;value;<command>

EXAMPLE:

 IF EQUAL;@%Customer1%;@%Customer2%;GOTO END;$ELSE GOTO NEXT

See also;

VARIABLES

IF NOT-EQUAL


IF NOT-EQUAL

This "IF" condition is used to check whether a ChiefPro batch file value/variable is the same as another value/variable. The condition is TRUE if the values of the first and second parameters are not the same, and FALSE if they are the same. The comparisons are not case sensitive.

The Syntax is;

 IF NOT-EQUAL;@%VARIABLE%;value;<command>

EXAMPLE:

 IF NOT-EQUAL;@%PassWord%;African Chief;GOTO INVALID_PASSWORD

See also;

VARIABLES

IF EQUAL


IF ACTIVEDLL

This command allows you to check whether a particular Windows (16-bit) DLL is currently loaded (active) and (optionally) to return its handle if it is active. If the DLL is active, then its handle is returned in; ACTIVEDLL

The Syntax is;

 IF ACTIVEDLL;<dllname>;<command [ACTIVEDLL]>

EXAMPLES:

 IF ACTIVEDLL;CTL3DV2;SAY Ctl3dv2.dll is loaded.\nIt's handle is ACTIVEDLL.

 IF ACTIVEDLL;BWCC.DLL;SAY Somebody is using Borland's Custom controls!


IF REGENTRY

This command allows you to check whether value exists for a registry entry. It only works in respect of string entries (i.e., REG_SZ). The command takes only one parameter - the FULL name of the registry key, the value of which you are checking for. If a value exists, the value is returned in: REGENTRY.

The Syntax is;

 IF REGENTRY;full-entry;<command [REGENTRY]>

EXAMPLE:

 IF REGENTRY;HKEY_CLASSES_ROOT\CHIEFPRO\HOMEDIR;ASSIGN @CHIEFDIR=REGENTRY

See also;

$REG-DATA

WRITEREG


IF DISKLABEL

This command allows you to check whether the label of a disk is the same as that specified by you. The command takes 3 parameters - first, the drive/disk whose label you want to check, secondly, the string that you want to check it against, and thirdly, the command to be executed if the label is the same. Note that the comparison is not case sensitive.

The Syntax is;

 IF DISKLABEL;<drive/disk>;<labelName>;<command>

EXAMPLE:

 IF DISKLABEL;$SOURCEDIR;Install_1;GOTO CONTINUE;$ELSE;GOTO END


IF GETFILE

This command allows you to retrieve a filename from a custom file dialog box. The command takes 4 parameters - first, the caption of the file dialog box, secondly, the default filename, thirdly, the file mask (e.g., "*.CPP"), and lastly, the command to execute if the file name is retrieved. If a file name is retrieved, its full path name is returned in: GETFILE.

The Syntax is;

 IF GETFILE;Caption;DefaultFileName;FileMask;<command [GETFILE]>

EXAMPLES:

 IF GETFILE;Your text editor;notepad.exe;*.EXE;EXEC GETFILE

 IF GETFILE;Open File;C:\DELPHI\TEST.PAS;*.PAS;SAY GETFILE

See also;

IF GETDIR


IF GETDIR

This command allows you to to retrieve a directory name from a custom directory dialog box. The command takes 3 parameters - first, the caption of the directory dialog box,secondly, the default directory name, lastly, the command to execute if the directory name is retrieved. If a directory name is retrieved, its full path name is returned in: GETDIR.

The Syntax is;

 IF GETDIR;Caption;DefaultName;<command [GETDIR]>

EXAMPLE:

 IF GETDIR;Your Backup Directory;H:\CHIEFPRO\BAK;CD GETDIR

See also;

IF GETFILE


POSTMESSAGE
POSTMESSAGE or SENDMESSAGE

This command allows you to send a message to an active window (identified by it's window title. You can use the wildcard (i.e., "*") at the beginning of the window title or at the end of it to siginify that any beginning or ending will be okay. The syntax for specifying the window title is the same as that for EXECWAIT-WINDOW. Please see that command for details.

Below is a list of the messages which you can post to a window, and, in brackets, the equivalent Windows message;

MAX        (sw_Maximize)

MIN        (sw_Minimize)

CLOSE      (wm_Close)

QUIT       (wm_Quit)

HIDE       (sw_Hide)

SHOW       (sw_Show)

TOPMOST    (HWnd_TopMost)

NOTOPMOST  (HWnd_NoTopMost)

SETFOCUS   (SetFocus)

The Syntax is;

 POSTMESSAGE;<windowtitle>;<message>

EXAMPLE:

 POSTMESSAGE;*Delphi;Max

 POSTMESSAGE;Program Manager;QUIT

See also;

EXECWAIT-WINDOW


PREPEND

Use this to add a value to the beginning of a variable. The value can be either a literal value, or another variable. After the operation, the variable holds the concatenated values. The command takes two parameters - first, the name of the variable to operate on (preceded by the "@" sign), and, secondly, the value to prepend to it.

The Syntax is;

 PREPEND;@VariableName;<Value>

EXAMPLES:

 PREPEND;@Customers_Wife;Mrs.

 PREPEND;@Client_Name;@Client_Title

See also;

ASSIGN

CONCAT


UNPAK

This command is used to unpack a ChiefPro packed archive. It takes three parameters. The first is the name of the packed archive to unpack. The second, is the target directory, and the third is a code to indicate what should happen if the file being extracted from the archive already exists in the target directory. The valid codes here are the same as those in the $UNZIP command - please see that command for details.

The Syntax is;

 UNPAK;<packed archive>;<target directory>;[code]

EXAMPLE:

 UNPAK;$SOURCEDIR\WINSTAL0.PKK;$DEST\BIN;SKIP

 UNPAK;$SOURCEDIR\BDE-16.PKK;@%BDE_DIR%;CONFIRM

See also;

$UNPAK

UNZIP

$UNZIP


SET-BDE-INSTALL

This command is used to mark the beginning of BDE install operations. You should call it at the beginning of the batch file that you use for your BDE installation. It is necessary to do this, so that the BDE installation will not be logged for the uninstaller's use - otherwise, the BDE files will be removed by the uninstaller when/if your program is uninstalled, and the user may have other programs that use the BDE. From the SET-BDE-INSTALL command until the next "UNSET-BDE-INSTALL" command, no operation of the installer will be logged in the UNINSTAL.LOG file.

This command takes no parameter.

See also;

BDE INSTALLATION

UNSET-BDE-INSTALL

$UNPAK


UNSET-BDE-INSTALL

This command is used to mark the end of BDE install operations. You should call it just before your BDE install batch file exits - otherwise, any operation performed by the installer (after a SET-BDE-INSTALL command) will not be logged for the uninstaller.

This command takes no parameter.

See also;

BDE INSTALLATION

SET-BDE-INSTALL

$UNPAK


DLLCOMMAND

This command is used to load a Windows Dynamic Link Library (DLL) and call a function from it. It can be used to load and call functions from both Win16 and Win32 DLL files. Note however that in order to successfully load a Win32 DLL, your customer must be running a 32-bit version of Windows (i.e., Windows NT or Windows 95).

This command takes four parameters. The first is the full path name of the DLL that you want to load. The second must be either "16" or "32", depending on whether your DLL is 16-bit or 32-bit. The third is the name of the function that you want to call from the DLL, and the fourth is any parameter that you wish to pass to the DLL. The parameter to be passed to the DLL will be passed as a null terminated string (or pChar in Borland Pascal/Delphi).

The function to be called from the DLL can have any name, but it must be in the following format;

Returns :  a long integer (i.e., LONG or LONGINT). You can later access this in the next line, through the ERRORCODE variable (i.e., by calling IF ERRORCODE in the line immediately after the call to DLLCOMMAND).

Parameter: a single null terminated string

So, in Borland Pascal/Delphi for example, your DLL functions will look like this;

 Function FOO(Parm:pChar): LONGINT;

In C for example, your DLL functions might look something like this;

 long FOO(LPCSTR Parm);

The Syntax is;

 DLLCOMMAND;<Dll_Name>;<16/32>;<FunctionName>;<Function Parameter>

EXAMPLE:

 DLLCOMMAND;$DEST\DLL\PROTECT.DLL;16;EncryptInfo;$WINDIR\PROG.CCC

See also;

$USER-DLL


SHOW-TEXTFILE

This command allows you to display a text (ascii) file to the user, in a custom dialog box. It takes 2 parameters - first, the full path name of the text file to be displayed, and, secondly, the caption of the text dialog box. You can display text files of up to 16kb with this command.

The Syntax is;

 SHOW-TEXTFILE;<filename>;<dialog caption>

EXAMPLES:

 SHOW-TEXTFILE;$SOURCEDIR\UPGRADE.TXT;Upgrade Notice

 SHOW-TEXTFILE;$TEMPDIR\README.TXT;Please Read This!


PLAYSOUND

This command allows you to play a WAV file. It takes only one parameter - the name of the WAV file to be played.

The Syntax is;

 PLAYSOUND;<WAV file>

EXAMPLE:

 PLAYSOUND;$WINDIR\TADA.WAV

See also;

PLAY-AVI


PLAY-AVI

This command allows you to play an AVI file. It can take two parameters - the name of the AVI file to be played, and (optionally) a code - "FULLSCREEN" - to indicate whether the AVI file should be played in full screen mode. If "FULLSCREEN" is not specified as the second parameter, the AVI file will be played in windowed mode.

For the AVI file to play correctly, the user must have an appropriate driver already installed.

The Syntax is;

 PLAY-AVI;<AVI-filename>[;FULLSCREEN]

EXAMPLES:

 PLAY-AVI;$WINDIR\CLOCK.AVI

 PLAY-AVI;E:\MMOS2\MOVIES\MACAW.AVI;FULLSCREEN

See also;

PLAYSOUND


IF FILEDATE

Use this to verify the date and time stamp of a file. If the date and time stamp match the supplied date/time, the specified command will be executed. Otherwise, the command will be skipped.

The Syntax is;

 IF FILEDATE;<filename>;<date-time>;<command>

The date-time format is "DD/MM/YYYY-HH:MM"

where;

DD = Day (e.g. 23)

MM = Month  (e.g., 06)

YYYY = Year  (e.g., 1997)

HH = Hour (e.g., 22)

MM = Minute (e.g., 55)

EXAMPLES:

 IF FILEDATE;$dest\BUG.BUG;27/05/1997-16:30;GOTO MATCH

 IF FILEDATE;TROOK.CFG;04/09/1995-06:08;GOTO END

See also;

IF NOT-FILEDATE


IF NOT-FILEDATE

Use this to verify the date and time stamp of a file. If the date and time stamp do NOT match the supplied date/time, the specified command will be executed. Otherwise, the command will be skipped.

See the the "IF FILEDATE" command for further details as to syntax.

The Syntax is;

 IF NOT-FILEDATE;<filename>;<date-time>;<command>

EXAMPLES:

 IF NOT-FILEDATE;$dest\BUG.BUG;27/05/1997-16:30;GOTO HAS-VIRUS

 IF NOT-FILEDATE;TROOK.CFG;04/09/1995-06:08;GOTO CHANGED

See also;

IF FILEDATE


COMMAND LINE OPERATION
COMMAND LINE OPERATION/PARAMETERS

Chief's Installer Pro normally operates in an interactive way. When the program INSTALL.EXE is run, dialog boxes will be presented to the user, from where the user can select options, click on a button to start the installation, etc. While this is sufficient in most cases, there are situations in which you might want to use your own "pre-installer" (e.g., instead of my own SETUP.EXE or for any other purpose). Note that this option is not open to you if you are going to run SETUP.EXE.

For such situations, Chief's Installer Pro provides you with the flexibility of running INSTALL.EXE with command line parameters. There are three types of parameters that the program can take, and you can use one, or all, or some, or none of them, in any combination.

The first is /$TARGET=<target directory>. When this parameter is used, Chief's Installer Pro will assume that all the options which you have enabled in your INF file have been accepted, and will by-pass the first dialog - the installation will start straight away, without the user having the opportunity to select or unselect any of the options manually. This is useful if you want to ensure that the installation is carried out in a particular way (e.g., to ensure a standard setup on all computers in your company). If you are using this parameter, it should be the first one that is supplied.

Another parameter you can supply is the name of the INF file to use for the installation. Chief's Installer Pro defaults to WINSTALL.INF. You can however specify another file name for this purpose. If this is used, it should be the first parameter (if the /$TARGET= parameter is not used) or the second parameter (if /$TARGET= is used). This parameter will be taken as paramstr(1) or argv[1], because INSTALL.EXE does not include the /$TARGET= switch in the count of command line parameters.

The final parameter which you can supply is the source directory. You cannot use this parameter without using the one which specifies the name of the INF file. If this parameter is used, it should be the last one. If you specify an INF file, it is advisable to also use this parameter to specify the source directory for the installation. This parameter will be taken as paramstr(2) or argv[2].

Note that when you choose to run Chief's Installer Pro in this way, the program will faithfully do whatever you say, and will not necessarily verify any of these parameters. This option is provided for added flexibility - but if you use it, you are on your own, and it us up to you to make sure that your program does all the necessary authentification of the parameters you are passing.

In my opinion, it is far better to run Chief's Installer Pro in the normal way, but to allow the installer to click on the "START INSTALL" button automatically, by using the $AUTO-CLICK-BUTTON reserved word (with a parameter of 1). That way, all the normal internal checks would have been carried out, and you would be able to use SETUP.EXE.

Note: it is not advised to use any of these command line parameters if you are using the "Wizard" interface.

The Syntax is;

 INSTALL.EXE [/$target=<target dir>] [<INF filename> <source dir>]

EXAMPLES:

 INSTALL.EXE /$target=C:\CHIEFPRO

 INSTALL.EXE /$target=C:\CHIEFPRO C:\TEMP\CHIEF.INF

 INSTALL.EXE /$target=C:\CHIEFPRO C:\TEMP\CHIEF.INF A:\

 INSTALL.EXE A:\CHIEF2.INF

 INSTALL.EXE B:\CHIEF2.INF B:\

See also;

$AUTO-CLICK-BUTTON


THE UNINSTALLER

Many Windows programs are easy to install, but most are not so easy to remove, because of INI files and DLLs thrown all over the place. Users who wish to uninstall their programs face a hazardous task in which they may delete the wrong files, or remove the wrong entries in INI files. This may then make Windows unusable, necessitating an expensive re-install of Windows.

What this means is that many Windows users are reluctant to try out new programs on their systems because of hassles of removing the programs if they don't want them any more. This may mean that people will never ever get to see your wonderful program  :). Some other people have to spend a lot of money on commercial uninstallers, which attempt to snoop round the system. The fact that they are trying to undo someone else's work means that this is often a hit-or-miss affair - sometimes leading to an expensive program not getting the job done properly. Enter the UNINSTALLER!.

Chief's Installer Pro includes an "uninstall" program (UNINSTAL.EXE). Which will undo anything that Chief's Installer Pro did. If you used the $MAKE-UNINSTALL-LOG reserved word in your WINSTALL.INF file, Chief's Installer Pro will create a log file called UNINSTAL.LOG in the target directory. This file contains details of every change made to the system by Chief's Installer Pro.

The user can subsequently "uninstall" your program by running UNINSTAL.EXE. The uninstall program will read the log file UNINSTAL.LOG and use its contents to undo everything it did during the installation. This includes deleting the installed files, any directories created by Chief's Installer Pro, any Program Manager groups or icons created by Chief's Installer Pro, any entries made into INI files by Chief's Installer Pro, etc.

Having an uninstaller is one of the requirements for the Windows 95 logo!!!

Note that, unless the INI files are in your program's home directory, the INI files themselves will NOT be deleted. Only the entries made into them by Chief's Installer Pro will be deleted. This might result in "orphan" INI files - i.e., INI files with nothing inside them. I believe that this is preferable to deleting all the INI files themselves. This is because entries could have been made into existing INI files, and deleting such files will be disastrous. Therefore, I leave it to users to delete any orphan INI files manually  ("better safe than sorry" is the motto here - and, also, "beware Murphy's law").

Shared files (DLL, VBX, and DRV files) installed into the Windows or Windows SYSTEM directory are a special case. If a copy of such files already existed when the installation was running, no log will be made of them, and the uninstaller will NOT delete them (this is because they were obviously not put there by the installer). In cases where no copy of the file was found at install time, the file will be logged, and the uninstaller will delete it - but after asking the user for confirmation. This is because although the file was put there by the installer, it may (after the user has installed other programs) by needed by other programs. This is very often the case with Visual Basic applications, and applications which use BWCC.DLL and/or CTL3Dxx.DLL.

I believe that the uninstaller is a good marketing point for your program. First, there is the perception that a person who provides an uninstaller with his program must be very confident about the program itself. Also, users have nothing to lose by trying your program, since removing it is simply a matter of clicking on the icon for the uninstaller, and then supplying the home directory of the program to be uninstalled. If the uninstaller does not find the log file in that directory, it aborts with an error message. If the file is found, the user is given ONE opportunity to confirm that he or she does really want to uninstall the program.

The Uninstaller can take optional parameters. The first is the home directory of the program to be uninstalled. This means that you can pass your program's directory ($DEST) as a parameter to UNINSTAL.EXE when you are creating your program's icons with the $ICON command.

e.g: $ICON=$DEST\UNINSTAL.EXE $DEST;Uninstall my Program!

The second parameter that the uninstaller can take is the name of the LOG file to use for the uninstall. This parameter is normally optional (the program will default to UNINSTAL.LOG). But note that if a filename was supplied as a parameter to the $MAKE-UNINSTAL-LOG reserved word, then this parameter becomes MANDATORY here (i.e., you must supply that filename as a second parameter to UNINSTAL.EXE when you create the icons with the $ICON reserved word). Please note this point.

e.g: $ICON=$DEST\UNINSTAL.EXE $DEST VER2.LOG;Uninstall my Program!

Support for non-English languages is provided for the uninstaller by the use of string tables. These can be compiled into a DLL which must be called UNINST.DLL. If this file is not found at run time (it must be in the same directory as UNINSTAL.EXE) then the default English string table inside UNINSTAL.EXE will be used.

A copy of the English language version of the resource script (UNINST.RC) is provided for you to translate to your chosen language. Please note that if you choose to create your own translations and put them in the DLL, you are on your own.

The uninstaller will optionally uninstall the program in such a way that the deleted files cannot be undeleted. To enable this feature, use the parameter OVERWRITE in the $MAKE-UNINSTALL-LOG line. Note that when this is used, uninstalled files and directories cannot be undeleted, no matter what is attempted. They are first deleted, then they are overwritten by a 1 byte file, and then that file is deleted. Any such file that can be undeleted (in most cases, no file can be undeleted) will only delete to a file containing 1 byte (of garbage data). Therefore, it is not recommended that this feature should be used. It is only there because of a specific request, and if you use it, you are on your own.

See also;

$ICO

$ICON

$MAKE-UNINSTALL-LOG

SET-BDE-INSTALL

UNSET-BDE-INSTALL


CREDITS

 Many thanks to the following:

1. Claus Ziegler, ZieglerSoft, Denmark - a great Windows guru! Thanks for everything, and for the Danish translations of the string tables.

2. Joachim Rehmet and Juergen Kneifel - for the German translations of the string tables.

3. Drs. Bob Swart - for the Dutch translations of the string tables.

4. Gary W.Rohn - for sharing the source code to your FI program.

5. Agustin Cernuda - for the Spanish translations of the string tables.

6. Bimmer (Per Bakkendorff) - for the Norwegian and for some of the Swedish translations of the string tables.

7. Mats Lundalv - for some of the Swedish translations of the string tables.

8. Antoine Desir and Claude Daneluzzo - for the French translations of the string tables.

9. Frederico Berrino - for the Italian translations of the string tables.

10. Dr Abimbola Olowofoyeku (The African Chief) - for the Yoruba translations of the string tables.

11. Robert Jensterle - for the Slovene translations of the string tables.

12. Sigve Boe (SigveSaker) - for the Nynorsk translations of the string tables.

13. James Rezende Piton - for the Portuguese and Esperanto translations of the string tables.

14. Eran Krumholtz - for the Hebrew translations of the string tables.

15. Carol Roberto Marciel Roberto Levy - for another Portugues translation of the string tables.


DISCLAIMER

I do NOT warantee ANYTHING concerning any of the programs or files which make up "Chief's Installer Pro for Win16 and Win32". I accept NO RESPONSIBILITY for ANY LOSS OR DAMAGE of ANY kind, including, but not limited to, losses of a physical, mental, social, financial, marital, or of whatever nature, resulting from the use, or the purported use of Chief's Installer Pro for Win16 and Win32", or any of the files in the package, for any purpose whatsoever. I do not even warantee that the programs will not kill you. You use Chief's Installer Pro for Win16 and Win32 ENTIRELY AT YOUR OWN RISK, and you supply it to your customers, friends, family, acquaintances, or enemies, ENTIRELY AT YOUR OWN RISK.

If these terms are NOT acceptable to you, then you have no licence to use or test Chief's Installer Pro, and you should DELETE all the program's files from all your disks immediately AND PERMANENTLY.


FEEDBACK

Okay. I am keen to obtain feedback, especially from registered users. I also welcome suggestions for features. I cannot promise to implement every suggestion, but at least, I will consider the ideas. If you have any comments, ideas, suggestions, etc., or you just want to tell me how wonderful the program is :)  then please feel free to contact me by e-mail. I will try to respond if a response is appropriate.

You can contact me by e-mail at the following internet addresses:

 laa12@cc.keele.ac.uk

 100415.3414@compuserve.com


UPDATES

This program is being constantly updated. I will endeavour to release bug fixes as often as I receive bug reports and fix them. However, it is rather difficult to spread the word about new releases and updates. There are a number of internet ftp sites which are not usually busy and to which I can therefore upload new versions. You might want to check these places from time to time.

 CHIEF'S HOME PAGE

 http://ourworld.compuserve.com/homepages/African_Chief/

 FTP SITES (and directories)

 ftp.demon.co.uk  /pub/ibmpc/win3/apps/chief/pro

 micros.hensa.ac.uk  /micros/ibmpc/win/e/e022

 COMPUSERVE

 WINSHARE LIB 22

 WUGNET LIB 7

 MSBASIC LIB 15


REGISTRATION

Chief's Installer Pro is distributed under the Shareware principle. It can be copied and distributed freely, as long as ALL the supplied files, including documentation (this file) are included, and NO ATTEMPT is made to modify any of the files.

The Shareware principle means that you get a chance to EVALUATE the program free of charge for a reasonable period of time (in the case of Chief's Installer Pro, a maximum of 14 days). It does not mean that you will NOT have to pay for the program.

This program is NOT crippled in any way, and you only get nagged when you use the (optional) Chief's Installer Pro compiler. What this means is that you now have the FULL version of Chief's Installer Pro. Nothing is disabled, there are no extra files, and there is no written manual. All the documentation is in the .HLP file (CHIEF.HLP).

I take the view that releasing the full version in this way is necessary in order to enable people to fully evaluate the program, being that they will be seeing exactly what the program is. It also helps to ensure that when you do register, you do not have to wait for days or weeks to receive your "registered copy".

However, this approach also means that I am relying totally on people's honesty to register. Chief's Installer Pro is a tool to help programmers concentrate on their products by not having to worry about installation routines, thereby improving their productivity. In other words, Chief's Installer Pro helps you make money. A lot of time and effort has gone into this program, and I am not asking for much, considering that users will be getting a royalty-free license, which covers all their Windows applications! If you find Chief's Installer Pro useful and would like to continue using it, or you would like to use it as the installation routine for your own programs, then I would encourage you to please REGISTER your copy.

 BENEFITS OF REGISTRATION

1. You will receive a serial number and a registration code which will remove the nags from the compiled INF and batch files, and which will entitle you to a upgrades to future shareware releases of Chief's Installer Pro, up till (but not including) the next MAJOR release. MAJOR upgrades will be numbered in whole numbers, and attract an upgrade fee of 50% of whatever is the prevailing registration fee. Minor upgrades will be numbered in .10 increments, and will be free.

2. Freedom to use Chief's Installer Pro as the installation program for an unlimited number of your own applications.

3. A clear conscience.

4. Support (via e-mail) for the program.

5. A chance to have an input into the features of future versions (I will not accept suggestions for new features from anyone who has not registered).

6. Not having to worry that I will discover that you have used the package as the installation routine for your program without registering <g>

7. You will be very cool indeed.

REGISTRATION FEE (for public deployment of applications by developers)

£39.99    (U.K. STERLING)

$59.99    (U.S.)

$80.00    (Australian)

 SITE or NETWORK LICENSE (for "in-house" deployment within an institution)

[a] 1-9 users: FULL price for each user

[b] 10-19 users : standard fee, times users, with a 20% discount

[c] 20-29 users : standard fee, times users, with a 25% discount

[d] 30-39 users : standard fee, times users, with a 30% discount

[e] 40-49 users : standard fee, times users, with a 35% discount

[f] 50+ users: standard fee, times users, with a 45% discount

[g] For more than 100 users, please contact Dr A Olowofoyeku directly, for a generous licensing deal.

Please NOTE that ALL prices are subject to change WITHOUT NOTICE.

Please NOTE also that the correct fee (including taxes/duties/charges where appropriate) must be sent in all cases. If a necessary duty/tax is not sent, the order can not be processed.

 I would also encourage registrants to please PRINT their registration requests CLEARLY.

We have in the past received several registration requests that were not legible, especially the e-mail addresses. This is especially important for low-grade faxes. If we cannot read your details, then it also follows that we will neither be able to process your registration, nor even to contact you to inform you of the problem.

Furthermore, some people just send a cheque without specifying what program they are registering. Please note that most of the registration sites deal with several products. You need to clearly specify the product (including version number) that you are trying to register.

See also;

REGISTRATION SITES

COMPUSERVE

AUSTRALIA

USA

UNITED KINGDOM

CREDIT CARD ORDERS


REGISTRATION SITES

Below are the registration sites for Chief's Installer Pro. Please send your registration request to the registration site that is most convenient for you. Some of the registration sites cannot accept credit card orders. If you are paying by credit card please check carefully that the registration site you are dealing with can accept payment by credit card.

YOU CAN SEND THE REGISTRATION FEE TO ANY OF THE FOLLOWING REGISTRATION SITES;

COMPUSERVE

AUSTRALIA

USA  AND NORTH AMERICA

UNITED KINGDOM

CREDIT CARD ORDERS

When you want to send in your oder, please fill the REGISTRATION FORM


COMPUSERVE

On-line registration is available under the SWREG scheme. If you GO SWREG, the Registration ID is 7557.

See also;

CREDIT CARD ORDERS


AUSTRALIA, NEW ZEALAND, ASIA, THE FAR EAST

 Please send orders from these areas to:

DAVID PERKOVIC

DP Computing

P.O.Box 712

Noarlunga Center

SA 5168

Australia

Internet e-mail: david@dpcomputing.com.au

Homepage: http://www.dpcomputing.com.au

Tel:    +61 8 326 4364

Mobile: +61 015 973 503

Fee:  $80.00   (Australian funds)

NOTES:

1. Method of payment: Cheques, Money Orders

2. Make cheques/money orders payable to: "DP Computing".


USA AND NORTH AMERICA

 Please send orders from the USA and North America to:

TODD MERRIMAN

Software Toolz, Inc.

8030 Pooles Mill Dr.

Ball Ground,

GA 30107

U.S.A.

Tel: +1 770 889 8264

Fax: +1 770-887-5960

Internet: todd@toolz.com

HomePage: http://www.toolz.com

On-Line Registration: http://www.toolz.com/register.htm

Fee:  $59.99 (US funds)

NOTES:

1. Method of payment: Checks, Money Orders, Visa, Mastercard, American Express.

2. Georgia residents must add the appropriate Sales Tax. No other locations should include sales tax.

3. Company purchase orders with payment in arrears are not accepted. However, invoices can be issued by Software Toolz, and the license will be issued when the invoice is paid.

4. Make checks and money orders payable to Software Toolz, Inc.

5. Please do not e-mail unencrypted credit card numbers. Internet e-mail is not secure. To order by credit card via e-mail, use the TOTOOLZ encryption program to encrypt the author's order form and then e-mail the encrypted order form back to Software Toolz using the above e-mail address. The MSDOS command to encrypt the order form is: TOTOOLZ <input file> <output file> where "input file" is the author's order form which you have filled-out, and "output file" is the mail message you will send to Software Toolz.

Otherwise, point your browser to: http://www.toolz.com/register.htm to register on-line.

6. Enclose the author's registration form supplied in the distribution archive with the payment.  It contains information the author needs to validate your registration.

7. Your registration confirmation will be sent via e-mail. Be sure to include your email address on the order form.

8. Please do not ask to be called by telephone. Please do not ask to be faxed information or an order form. The shareware archive contains all the necessary information and forms you need to register.

9. No software support is available from Software Toolz, nor can any technical questions concerning the software be answered by Software Toolz.

10. Credit card orders require: Name on card, Account Number, Expiration date, Signature (if by FAX or mail)

See also;

CREDIT CARD ORDERS


UNITED KINGDOM, IRELAND, EUROPE, EVERYWHERE ELSE

 Please send orders from these areas to:

JOHN BARTON

57 Baddeley Green Lane

Baddeley Green

Stoke on Trent

Staffs, ST2 7JL

ENGLAND.

E-mail: 100306.1334@compuserve.com

Fee:  £39.99 (U.K. funds; or equivalent)

NOTES:

1. Method of payment: Cheques, Eurocheques, Money Orders

2. Make cheques/money orders payable to: "JOHN BARTON".

3. ADD: £7.50  (if sending a foreign cheque; note that foreign cheques that do not contain this fee will not be processed)


CREDIT CARD ORDERS

Please note that of all these registration sites, the only ones which can process CREDIT CARD orders are;

[a] Compuserve,

[b] Todd Merriman

If you will not be registering on-line on Compuserve, please post all credit card orders to Todd Merriman.

Credit card orders should preferably be made by telephone, fax, or by post. PLEASE DO NOT SEND YOUR CREDIT CARD DETAILS BY ORDINARY INTERNET E-MAIL. The internet is NOT a safe or secure means of transmitting credit card details, and your details are liable to TO FALL INTO THE WRONG HANDS. If you must send your credit card order by e-mail, you must first encrypt the information (with TOTOOLZ.EXE) and then e-mail the encrypted information to Todd Merriman only. Please do not e-mail encrypted information to any other registration site.

NOTE: If you want to send your credit card orders to Todd Merriman by e-mail, please put your details (as per the registration form) in an ASCII file, and then run the program TOTOOLZ.EXE on the file. This will encrypt the contents of the file. You can then safely e-mail the (encrypted) output file to Todd Merriman. This precaution is to protect your credit card details from internet hackers.

Otherwise, point your browser to: http://www.toolz.com/register.htm to register on-line.

NOTE: Credit card orders require;

[a] Name on card

[b] Account Number

[c] Expiry date

[d] Signature (FAX or mail)

See also;

REGISTRATION SITES


REGISTRATION FORM
To register Chief's Installer Pro, please PRINT and FILL IN the following Registration FORM.

NOTE: Please specify your CURRENT version of Chief's Installer Pro.

 TO:

________________________________________________________________________

________________________________________________________________________

________________________________________________________________________

________________________________________________________________________

 I wish to REGISTER my copy of "Chief's Installer Pro".

 My current version is    __________

 I am ordering   __________  copies

 I am paying the REGISTRATION FEE of         __________

 ADD Tax (if applicable)                                  __________

(See info on the registration sites to see if they collect tax)

Total FEE:                                                   ____________

I am paying by   Cheque/Money Order/Credit Card  (delete as inapproriate)

NAME         ___________________________________________________________________

ADDRESS   _________________________________________________________________

CITY      _________________________________________________________________

STATE/COUNTY ______________________________________________________________

POST/ZIP CODE _______________________________________________________________

COUNTRY ______________________________________________________________

E-MAIL           _________________________________________________________________

How did you get your copy of Chief's Installer Pro?

________________________________________________________________________

IF PAYING BY CREDIT CARD, PLEASE SEND THE FOLLOWING DETAILS;

NOTE: Not all sites accept credit cards so please see the CREDIT CARD ORDERS section for details of those who can take credit card orders

NAME on CARD          ______________________________________________

CARD ISSUER           ______________________________________________

CARD NUMBER           ______________________________________________

DATE OF ISSUE         _______________________________________________

EXPIRY DATE           ______________________________________________

SIGNATURE             _______________________________________________

DATE                  __________________________________________________

 PLEASE REMEMBER TO SIGN THE CREDIT CARD ORDER!


TECHNICAL SUPPORT

1. Technical support can only be provided for people who HAVE registered. Please note therefore that no support can be provided for anyone who has not registered (not even if you promise me that "the cheque is in the post"), and that I can answer no questions from anyone who has not registered. This is so that those who have paid can get the support that they deserve and have paid for.

2. Please note also that NONE of my registration sites can provide technical support. Therefore, customers are asked to please not telephone or fax any request for technical support to any of my registration sites. Rather,  all requests for technical support should be sent to Dr A Olowofoyeku (address below). The preferred medium of communication is electronic mail.

3. Please read the CHIEF.FAQ file before sending requests for technical support. The file might very well contain the answer to your query.

4. Please send requests for technical support by e-mail to:

[a] laa12@cc.keele.ac.uk

OR,

[b] 100415.3414@compuserve.com

If you do not have e-mail facilities, then please send queries by post to:

Dr A A Olowofoyeku

268 Horwood

Newcastle

STAFFS,   ST5 5BQ

ENGLAND.


GOLD AWARD

Chief's Installer Pro was winner of the PC PLUS Magazine's GOLD AWARD (U.K. edition, April 1995).


FORMATTING CODES

Most of the messages (whether in string tables, or in reserved words, or batch commands) can be formatted with a single formatting code. You can insert carriage returns at any point in the messages by using the "newline" code (i.e., \n). If a literal "\n" is desired, an exclamation mark should precede the "n" (i.e., "\!n"). Furthermore, the "\n" is case sensitive - so, for example, "\N" will not be converted.

The existence of this formatting code should be taken into account when referring to file/directory names in messages. If a file/directory name is in lower case letters, and the name includes a "\n" (e.g., "c:\network\newfile") then the "\n" in the name will be taken as a newline code, and the message will not be displayed properly. Thus, it is recommended that, when displaying messages to the user, file and directory names should be expressed in upper case letters.